




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章C语言程序设计基础,C语言程序设计学习重点标识符关键字数据类型表达式基本语句函数存储类型预处理,程序设计语言介绍,从机器语言开始,程序设计语言经历了一个发展过程,如:机器语言、汇编语言、高级语言(C、C+等)。机器语言是由二进制代码“0”和“1”组成的,能够被硬件(计算机、单片机、DSP等)直接识别和执行的语言。最终烧写到硬件的就是机器语言。用机器语言编写程序难学、难记、难懂、难用,很少使用。汇编语言是一种符号化语言,它使用助记符代替二进制指令。汇编语言比机器语言易学易懂,它的优点是效率高、占用空间少、实时性高,但由于依赖具体硬件,因此可移植性差,编写大程序时调试复杂。C语言是一门高级语言,易学易用。它支持自上而下的结构化程序设计,可大大缩短应用程序的开发周期,使软件的可读性增加,编写效率明显提高,可移植性好。因此C语言已成为目前最流行的单片机、DSP开发语言。,C、汇编和机器语言三者之间的联系,如果您想了解硬件的具体结构和工作原理,那么您可以选择汇编语言。如果您想快速入门,开发大的系统,那么建议您学习C语言编程。,怎样选择?,C语言,汇编语言,机器语言,编译,汇编,一个简单的C的程序,voidmain(void)charP0,LED;/P0是端口0,LED是发光二极管输出P0=0 x24;LED=0 x35;While(1);,C语言程序设计要点,标识符关键字数据类型表达式基本语句函数存储类型预处理,标识符,标识符用来定义常量、变量、函数、标号以及用户定义对象的名称。说明:标识符由数字和字母组成,但第一个字符必须是字母或下划线。C语言中大、小写字母被认为是不同符号。例如:at、AT、At就是三种不同的标识符。标识符命名的良好习惯见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名。例如:name(姓名)、sex(性别)、age(年龄)。,关键字,关键字是一种已经被编译器定义过的标识符,具有特定的含义,因此也称作保留字,意义是不可以再被用户定义。下表列出了ANSIC定义的标准关键字。,关键字,数据类型,F2812支持的基本数据类型,在CCS中将常用的数据类型重新定义如下:,Typedefintint16;Typedeflongint32;TypedefunsignedintUint16TypedefunsignedlongUint32;Typedeffloatfloat32;Typedeflongdoublefloat64;,数组,数组是一些同类型数据的有序结合,它们存储在内存的一个连续存储区域。定义:数据类型数组名常量表达式;引用:数组名下标说明:定义中的数据类型指的是数组元素的数据类型,它们可以是基本数据类型,也可以是构造类型。常量表达式表示的是数组容量,也叫数组长度。数组名可以是任何C语言的合法标识符,相当于数组的首地址。占用空间:所有成员占用空间之和。注意:在硬件编程中很少使用多维数组,所以此处没有讲述。,举例,初始化:在定义数组时对数组元素赋以初值,如下:intage4=31,29,32,15;如果想使一个数组全部元素为0,可以写成:intage4=0;引用:C语言规定只能逐个引用数组元素而不能引用整个数组。例如将数组age4=31,29,32,15的全部元素之和赋给a,代码如下:intage4=31,29,32,15;inta;a=age0+age1+age2+age3;,结构体,结构体是将不同类型的数据按一定顺序存放在一起的数据结构。定义在声明类型的时候同时定义变量,形式为:struct结构体名成员表列变量名表列;直接定义结构体类型变量,形式为:struct成员表列变量名表列;引用:结构体变量名.成员名,结构体,说明:类型与变量不能混淆,只能对变量赋值。结构体的成员可单独使用,相当于普通变量。成员本身可以是一个结构体。占用空间:所有成员占用空间之和。,举例,定义一个结构体名为student的结构体,有两个变量为student1和student2,对变量student1的成员no赋值25,并将student1的成员no赋值给student2的成员no,如下:structstudentintno;/*学号*/charname8;/*姓名*/charsex;/*性别*/intage;/*年龄*/floatscore;/*C成绩*/student1,student2;student1.no=25;student2.no=Student1.no;,位域型,位域是这样一种数据结构,它定义每个元素(成员)的二进制位数,以bit为操作对象,这在对单片机外部设备的管理方面有广泛应用。位域定义的一般形式为:struct位域结构名数据类型成员1:长度1;数据类型成员n:长度n;变量名表列;引用:位域结构变量名.成员名,位域型,说明:其中“数据类型”为位域结构的成员的数据类型,通常为unsignedchar和unsignedint类型;成员1成员n为位域结构的成员名,为用户定义的标识符;冒号后面的“长度”表示相应成员的二进制位数;不是每个位域类型的成员都需要命名,但要有域长,从而可以跳过这些位;位域变量被定义后,按照定义的顺序,系统为其在内存开辟存储空间,在一个char或int的各位中逐个存放,如果小于一个字节,也将占用一个字节。,举例,structunsignedcharP1OUT_0:1;unsignedcharP1OUT_1:1;unsignedcharP1OUT_2:1;unsignedcharP1OUT_3:1;unsignedcharP1OUT_4:1;unsignedcharP1OUT_5:1;unsignedcharP1OUT_6:1;unsignedcharP1OUT_7:1;P1OUT_bit;P1OUT_bit.P1OUT_0=1;,共用体,共用体是将不同类型的数据都存放在同一起始地址的内存单元中,共用一段内存以节省内存单元。定义:union共用体名数据类型成员1:长度1;数据类型成员n:长度n;变量名表列;union数据类型成员1:长度1;数据类型成员n:长度n;变量名表列;,共用体,引用:共用体变量名.成员名说明:共用体变量中可以包含若干成员及若干种类型,但共用体成员不能同时使用。在每一时刻,只能引用一个成员。共用体变量中起作用的成员值是最后一次存储的成员值。共用体变量所有成员共用同一段内存单元,共用体变量和它的各个成员具有相同的地址。后来存放的共用体成员值将覆盖之前存放的共用体成员值,故只能使用最后一次存储的共用体成员值。不能对共用体变量进行初始化和赋值,也不能通过引用共用体变量名来得到某成员的值。共用体变量不能作函数参数,函数的返回值也不能是共用体类型。占用空间:最长的成员的长度。,枚举,枚举就是列举一个变量所有的取值。实际是用符号来表示若干个可取的整型值,它是整型的一个子集。定义:enum枚举型名枚举常量1,枚举常量2枚举常量n变量名表列;enum枚举型名枚举常量1,枚举常量2枚举常量n;enum枚举型名变量名表列;引用:变量名,举例,定义:Enumweekdaysun,mon,tue,wed,thu,fri,satday;引用:Day=sun;,指针型,指针变量:一种特殊的变量,它在内存中保存的不是一般的数值,而是另一个变量的地址。间接存取方式:通过指针来实现数据访问的方法。定义:数据类型*指针变量名;取地址运算符“int*pointer=data;chari;inttest;for(i=0;i=;逻辑运算符:!、ib?a:b表示若a大于b,则表达式的值为a;若a小于b,则表达式的值为b。实际上是求a、b的最大值。,基本语句,条件语句开关语句循环语句,if语句,单分支if语句:格式:if(条件表达式)语句;双分支if语句:格式:if(条件表达式)语句1;else语句2;多分支if语句:格式:if(条件表达式1)语句1;elseif(条件表达式2)语句2;elseif(条件表达式n)语句n;else语句n+1;,switch语句,switch(表达式)case常量表达式1:语句组;break;case常量表达式2:语句组;break;.case常量表达式:语句组;break;default:语句组;break;,switch语句,执行流程:(1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句;当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。(2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default后面的语句(组)。然后,再执行switch语句的下一条。说明:每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象。case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。,循环语句,while循环语句格式:while(表达式)语句;do-while循环语句格式:do语句while(表达式);for循环语句格式:for(循环变量赋初值;循环条件;循环变量增值)语句;,跳转语句,goto格式:goto语句标号;return格式:return(表达式);break格式:break;continue格式:continue。,break和continue语句,说明:break语句只能用于switch结构或循环结构,如果在程序中有下列语句:if()break;则此时的if语句一定位于循环体中或switch结构中,break语句跳出的也不是if语句,而是跳出包含此if语句的循环结构或switch结构。continue语句的作用是结束本次循环,即跳过循环体中位于continue后面的语句而立即开始下一轮循环判定:对于while和do-while来讲,这意味着立即执行条件测试部分,而对于for语句来讲,则意味着立即求解循环条件表达式。,函数,从用户角度来看,有两种函数:标准库函数和用户自定义函数。标准库函数是编译器提供的,不需要用户定义。可以直接调用。而用户自定义函数用户根据自己需要编写的能实现特定功能的函数,需要先进行定义才能调用。函数定义的一般形式为:函数类型函数名(形式参数表)局部变量定义函数体语句返回值函数调用的一般形式为:函数名(实际参数表),函数,说明:函数的参数传递分为值传递和地址传递。当传递参数大于3个时,建议用地址传递;如果函数没有返回值或者形式参数,建议用void避免错误。如定义函数voidtest(void)。举例定义:intsum(inta,intb)inttemp;temp=a+b;return(temp);调用:sun(3,7),main函数,main函数是一个比较特殊的函数。每个单片机C程序都必须有一个名为main的函数,程序从这里开始执行。main函数另一个独特的属性是,它有两种正式的原型且经常会使用一些其它形式。两种标准型如下:intmain(void);intmain(intarge,char*argv);整型返回值的作用是向系统返回一个状态码,一般应用在复杂程序之中,单一程序中一般采用如下结构:voidmain(void)局部变量定义;函数体语句;,存储类型变量,变量和函数都有其有效区域,称为作用域。程序如果使用范围之外的变量和函数,则编译器会报错。变量局部变量:在函数体内部定义的变量,它只在函数内有效,退出函数时所分配的内存被释放;全局变量:在函数之外定义的变量,在程序开始执行的时候就被分配了内存,一直保持到程序结束,可以被任何模块调用。外部变量:在其它文件中定义但在本文件中使用的变量,用extern标识。静态变量:寿命相当于全局变量,但只允许在定义的函数内使用的变量。静态变量在退出定义的函数时,其值仍然保留。变量的声明形式:作用域类型数据类型变量名;,存储类型变量,存储类型函数,函数的存储类型有static和extern两种,函数第一字母大写。声明形式为:作用域类型返回数据类型函数名(参数表);说明:声明为static的函数称为内部函数或者静态函数。静态函数只能在定义此函数的文件中被调用,而不能被其他文件中的函数调用。extern称为外部函数。除非被声明为静态函数,函数都可以在其他文件中被调用,编译默认为外部函数,因此extern通常可忽略。,预处理功能,宏定义条件编译文件包含,宏定义,不带参数的宏定义形式为:define宏名宏体带参数的宏定义形式为:define宏名(参数表)宏体取消宏定义,形式为:undef宏名说明:宏名一般习惯用大写字母表示,以便与变量名相区别。宏定义是用宏名简单替换宏体,也就是作简单的置换,不作语法检查,出现错误也不会报告,只有在宏展开后编译时才会报告错误。使用宏名,可以减少程序中重复书写某些宏体的工作量。,条件编译,格式一:#ifdef标识符程序段1#else程序段2#endif格式二:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核酸采样考试题及答案
- 装好公司活动方案
- 海关政治考试题及答案
- 光谱技能考试题及答案
- 关税保险考试题及答案
- 公共礼仪考试题及答案
- 工地招聘考试题及答案
- 高校求职考试题及答案
- 感染护士考试题及答案
- 粪便检验考试题及答案
- 江苏省普通高中生物课程标准教学要求(修订稿)
- 国家智慧中小学教育平台应用培训
- 青少年无人机课程大纲
- 2025-2030中国耳鼻喉外科手术导航系统行业市场发展趋势与前景展望战略研究报告
- 剪彩仪式方案超详细流程
- 2024年二级建造师考试《矿业工程管理与实物》真题及答案
- 人教版初中九年级化学上册第七单元课题1燃料的燃烧第2课时易燃物和易爆物的安全知识合理调控化学反应课件
- 发电厂继电保护培训课件
- 校企“双元”合作探索开发轨道交通新型活页式、工作手册式教材
- 肺癌全程管理
- 2024年考研英语核心词汇
评论
0/150
提交评论