版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1个变量的值了精确地说就是优化器在用到这个变量时必须每次都地重新这个变量的并行设备的硬件寄存器(如:状态寄存器一个中断服务子程序中会到的非自动变量(Non-automatic变量。不懂得volatile内容将会带来。一个参数既可以是const还可以是volatile一个指针可以是volatileintsquare(volatileint{return*ptr*}intsquare(volatileint*ptr){inta=b=*ptr;returna*b;}longsquare(volatileint{inta=*ptr;returna*a;cc++struct答:cc++structcstructc++struct可以。c++structclassstructpublic,而classprivate.ARMarm7---依曼结构---3级:取指,译码,执行arm9---哈佛结构---5使用这个宏前需要包含头文件(6嵌入式系统是指用于执行独立功能的计算机系统。它由微电子包括微处理器、定时((PDA随着后PC大缩短嵌入式产品投放市场的时间,而且使产品具有丰富的人机界面,嵌入式WEB及符合IEC61131-3的控制逻辑功能,并且可以相当数量的历史数据,部分完成现场工作站级计算机这里给出不业的一些应用举例设备、炼油厂设备、无人站。2、医疗卫生设备:X光机、CT、医政管理系统、监测系统3、楼宇自控及商业零售网点、商业POS、保安设备;;5、件的开发环境一般运行于具有良好人机界面的Windows式操作系统如WindowsCE,DeltaOS,NTEmbedded及LINUX和Dos之上,甚至直接支持特定CPU,嵌件、Control逻辑和流程控制组件及实时内核。7答:能,局部会全局。要用全局变量,需要使用"::";局部变量可以与全局变量同名,在函数内这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器8如何一个已经定义过的全局变量答:可以用头文件的方式,也可以用extern关键字,如果用头文件方来某个在头文件中的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式时,假定你犯了同样的错误,那么在编译期间不会报错,而在连9、全局变量可不可以定义在可被多个.C答:可以,在不同的C文件中以static形式来同名全局变量。可以在不同的C件中同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会10static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?答:1)static就构成了静态的全局变量。全局变量本身就是静态方式,静态全局变量当然也是静态方式。这两者在方式上并从以上分析可以看出,把局部变量改变为静态变量后是改变了它的方式即改变staticstaticstatic全局变量只初使化一次,防止在其他文件单元中被;static局部变量和普通局部变量有什么区别:staticstaticstatic11.用宏定义写出答#defineswap(x,y)x=x+y;y=x-x=x-1,2,3,而二进制方式是0000000000000001000000000010000000000000Inta=Longintc=a*根据cintlongintLongintc=(longint)a*b;或者Longintc(longint)a*(longint)bChara[]=“stringli Char*p=“stringli Strcpy(p,”stringli 代表一个地址,地址上保存着字符串,把这个地址上的字符串到p指针指向的地址,注意指 变量的方式可分为:“静态”和“动态”两种静态变量通常是在变量定义时就分定单元并一直保持不变,直至整个程序结束。全局变量即属于此类方式。动态变量是在程序执行过程中,使用它时才分配单元,使用完毕立即释放典型的例子是函数的形式参数,在函数定义时并不给行参分配单元,只是在函数被调register称为寄存器变量。它只能用于整型和字符型变量。定义符register说明的变量被TurboC2.0在CPU的寄存器中,而不是象普通的变量那样在内存中,这样可以提TurboC2.0只允许同时定义两个寄存器变量,一旦超过两个,编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量来处理。因此,寄存器变量常用在同一另外,寄存器变量只适用于局部变量和函数的形式参数,auto因此,不能用作全程变量。定义一个整型寄存器变量可写成:registerinta;19.C{inta=100,i,sum;}}20(Apointertoapointertoanint一个有10(Anarrayof10pointerstointegers)int*a[10]10(Apointertoanarrayof10integers)int(*a)[10]21.static答:向系统申请一个静态的内存空间,其内存空间不能改变,与auto相对。23.24.Typedef在C语言中频繁用以一个已经存在的数据类型的同义字。也可以用预处理器做#definedPSstructs*typedefstructs*dPStPS作为一个指向结构s(如.C语言同意一些令人的结构,下面的结构是合法的吗,如果是它做些什么inta=5,b=7,c;c=a+++b;答:上面的结构合法;因为+比++优先级别效于c=a+(++b)所以BOOL,int,float,aBOOL:if(!a)orif(a)int:if(a==0)float:constEXPRESSIONEXP=0.000001if(a<EXP&&a>-EXP)pointer:if(a!=NULL)orif(a==Attribute constPINTp1; //const和PINT修饰的都是p1即指针,所以指向可变constpint //pint是字符,const修饰的是指针指向的值 const consttypedefPINT,constPINTconstPINTPINT(某种指针)的值是常量,p1intconst编译过程就是看某个函数有没有,在哪里,并不调用, 则会调C源程序->编译预处理->编译->优化程序->汇编程序 程序->可执行文编译预处理c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。defineNameTokenString,#undef所要作得的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替头文件包含指令,如#include"FileName"或者#include<FileName>等。在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量,同时包含有各种外部符号的声CC#include之进行处理。 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。IP答IPswitch()答、switch的参数不能为实型(****** 型(double,float,longdouble)*cc[0][0]一个元素的值;即:c[0][0]c*c(类型不同;(c+1):c是行指针(c+1)是在c的基础上加上二维数组一行的地址长度,即1:*c(*c&c[0][0]变到了&c[0][1](c1)和(*c1)的值就35、strcat能把strSrc的内容连接到strDest,为什么还要char*类型的返回值?const#defineConst作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都const数组要么在静态区被创建(如全局数组,要么在栈上被创建。指针可以随时指向任意类型的内存块。(1)修改内容上的差别chara[]=“o”;a[0]=‘X’;char*p=“world”;//注意p指向常量字符串p[0]=‘X’;//编译器不能发现该错误,运行时错误(2)sizeof可以计算出数组的容量(字节数。sizeof(p),p为指针得到的是一个pC++/C除非在申请内存时记住它注意当数组作为函数的参数进行传递时该数组自动为同类型的指针。chara[]="oworld";char*p=a;cout<<sizeof(a)<<endl;//12字节cout<<sizeof(p)endl;//4voidFunc(chara[100]){cout<<sizeof(a)<<endl;//4100字节}符也不会返回空指针。同样对malloc的成功调用也不返(malloc)void*void*指针和通用函数指针(任何类型都可以)int(*()(*(,void*指针和通用函数指针(任何类型都可以)40,(Process(Thread线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们内。一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进的空间;而线线程是指进的一个执行单元,也是进的可调度实体.与进程的区别:(1)地址空间:进空间;(2)进程是资源分配和拥有的单位,同一个进的线程共享进程的资源(3)线程是处理器MIN,#defineMIN(A,B)((A)<=(B)(A):为标准Cthen-else懂得在宏中地把参数用括号括起least=MIN(*p++,CC++答、c,c++用预处理指令#define一个常数,用以表明1年中有多少秒(忽略闰年问题#defineSECONDS_PER_YEAR(60*60*24*#define语法的基本知识(例如:不能以分号结束,括号的使用,等等typedefunion{longi;intk[5];charc;}DATE;structdata{intcat;DATEcow;doubledog;}too;DATEmax;则语句printf("%d",sizeof(structdate)+sizeof(max))答结果是 DATE是一个union,变量公用空间.里面最大的变量类型是20datastruct,int4+DATE20+double8=所以结果是20+32=16int2int2+DATE10+=45.-1,2,7,28,,126281264^3-1=63n^3-1(n0,2,4)n^3+1(n1,3,5)答、tcp/ip应用层/传输层/网络层/数据链路层/物理层InternetIP答、ARP(AddressResolutionProtocol)(地址解析协议IPIP答、1.限制变量的作用域(文件级的)。设置变量的域(全局数据区)表示层:处理在两个通信系统换信息的表示方会话层:负责两个结点间会话连接的建立、管理和终止,以及数据交换传输层:向用户提供可靠的端到端服务。UDPTCP络互联等功能。数据传输单元是分组。IP,IP程序:是存放在设备上的一系列代码和数据的可执行镜像,是一个静止的实进程在内核中有一它的task_struct数据结构,既通常所说的“进程控制块,内核通内核线程(进程)–进程描述符、PID、进程正文段、堆–进程描述符、PID、进程正文段、堆栈、用户空间的数据段和堆–进程描述符、PID、进程正文段、堆栈、同父进程共户空间的数据段和堆structstruct结构体字节对齐,可以通过编译器指定,结构体封装的不好,要用的冗余代码Struct主要是为了增加cpu的速度和内存控制器取数据时候的速度。内存控制器是4字节对齐的,一次取值都是取四字节,如果在8字节内存了3个数据,要取第二个数据就必须要取这8结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐选项。#pragmapack(push)//保存对齐状态#pragmapack(4)//设定为4字节对齐,如果结构体中最大的变量小于设置的值,那么设#pragmapack(pop)//
structint charchar intshort short 图中st1,第一个为int型,占用4个字节,第二个为char型,其偏移量为4,char的字节数为1,则偏移量是其占用字节数的倍数,则仅列其后,第三个为short型,占用字节数为2,前面已有字节为5,不是2的倍数,所以char后面padding一个字节,使得short实6,8str212考虑整个结构体的对齐需求。ANSIC储的char类型专门用于这种字符型数据当然任何整(int也可以用于字符型据。至于为什么程序中变量cintfile。我们在变量c的时候,必须让它大到足以存放getchar函数返回的任何值。所以这里不把c成char类型,是因为它必须足够大,除了能任何可能的字符外还要能文件结束符EOF。因此,将c成int类型。EOF<stdio.h>charWindows的控制台里面可以通过Ctrl Z来通知系统达到了文件结束Linux/Unix的S里面可以通过Ctrl D来表示达到文件结束GetcharEOFgetchargetcharWindowsCtrl+ZUnix/LinuxCtrl+D)换行符'\n'(EOF,EOF,getchar序将会往下执行。getchar()putchar()确实是按照每次一个putcharEOF头文件:如果用<>自己写的头文件,那么可以用一下集中方法通过编译1》2> gcco.c-I同一个对象,函数可以对地址指向的数据进行操作来改变其值。传 任何操作都被处理成间接寻址即通过堆栈中存放的地址主调函数中的实参变量正因为如57揭密externexternC"包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,externC"externexternC/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其的函数和变量可以在本模块或其它模块中使用。记住,下列语句:externint仅仅是一个变量的,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作通常,在模块的头文件中对本模块提供给其它模块的函数和全局变量以关键字extern例如,如果模块B欲该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,BAB虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。externstatic,被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本模块使用时,其不可能被extern“C”修饰。externC"C语言方式编译和连接的;未加extern“C”时的编译方式C++C作为一种面向对象的语言,C++CC++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:voidfoo(intx,intyC编译器编译后在符号库中的名字为_fooC++编译器则会产生像_foo_int_intname。_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数voidfoo(intx,inty)与voidfoo(intx,floaty)未加extern"C"时的连接方C++A//A头文件moduleA.h#ifndefMODULE_A_H#defineMODULE_A_Hintfoo(intx,inty);在模块B中该函数//B实现文件moduleB.cpp#include"moduleA.h"AmoduleA.obj中寻找_foo_int_int这样加extern"C"后的编译和连接方加extern"C"后,模块A的头文件变为//A头文件moduleA.h#ifndefMODULE_A_H#defineextern"C"intfoo(intx,inty);Bfoo2,3AfooC连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是 如果在模块A中函数了foo为extern"C"类型,而模块B中包含的是externintfoo(intx,inty),则模块B找不到模块A中的函数;反之亦然。所以,可以用一句话概括extern“C”这个的真实目的(任何语言中的任何语法特性的诞:C++C58关键字const的作用是为给读你代码的人传达非常有用的信息。例如,在函数的形参前添加const关键字意味着这个参数在函数体内不会被修改,属于"输入参数"。在有多个形参的时候,函数的调用者可以凭借参数前是否有const关键字,清晰的辨别哪些是输入参数,哪些是可能的输出参数。const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改,这样可以减少bug的出现。constC++C语言中仅意味着:"只能读的普通变量",可以称其为"不能改变的变量"(Cconst的本质编译阶段需要的常数仍然只能以#define宏定义!bit3,第二个清除 的bit3;bitfields。BitfieldsC语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到Infineon为其较复杂的通信写的驱动程序,它用到了bitfields因此完全对我无用,因为我的编译器用其它的方式来实现bitfields的。从道德讲:不要让;#definesbitmasks操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案#defineBIT3(0x1<<3)staticinta;voidset_bit3(void){a|=BIT3;}voidclear_bit3(void){a&=~BIT3;}。60C支持中断表事实是,产生了一个新的关键字interrupt。下面的代码就使用了interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。。interruptdoublecompute_area(double
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运输合作合同模板
- 棉花采购合同2024年度定制版(含质量、交货期限)
- 四下英语三单元教学课件教学课件教学
- 《醒脑开窍针法》课件
- 《鸡大肠杆菌病》课件
- 20恐龙课件教学课件
- 企业借款合同范本
- 机械设备租赁合同协议书
- 深圳市劳动合同经典版
- 《工地建设》课件
- 记叙文写作教学公开课一等奖市赛课获奖课件
- 2.PaleoScan详细操作流程
- 国土空间生态修复规划山水林田湖草
- 矿山开采与土地复垦
- 中国现当代文学知到章节答案智慧树2023年哈尔滨学院
- 毒力回归方程 EXCEL在毒力回归计算中的应用
- 语言学教程(英文版)胡壮麟版
- 猫病诊疗基础-猫的保定(猫病防治技术)
- 个体工商户合作协议书模板
- 中学生不良情绪产生的原因与调节方法的研究
- 仁爱版英语七年级单词总测试-
评论
0/150
提交评论