第2章_C语言程序设计基础[1]

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章C语言程序设计基础C语言程序设计学习重点标识符关键字数据类型表达式基本语句函数存储类型预处理程序设计语言介绍从机器语言开始,程序设计语言经历了一个发展过程,如:机器语言、汇编语言、高级语言(C、C+++等)。机器语言是由二进制代码“0”和“1”组成的,能够被硬件(计算机、单片机、DSP等)直接识别和执行的语言。最终烧写到硬件的就是机器语言。用机器语言编写程序难学、难记、难懂、难用,很少使用。汇编语言是一种符号化语言,它使用助记符代替二进制指令。汇编语言比机器语言易学易懂,它的优点是效率高、占用空间少、实时性高,但由于依赖具体硬件,因此可移植性差,编写大程序时调试复杂。C语言是一门高级语言,易学易用。它支持自上而下的结构化程序设计,可大大缩短应用程序的开发周期,使软件的可读性增加,编写效率明显提高,可移植性好。因此C语言已成为目前最流行的单片机、DSP开发语言。C、汇编和机器语言三者之间的联系如果您想了解硬件的具体结构和工作原理,那么您可以选择汇编语言。如果您想快速入门,开发大的系统,那么建议您学习C语言编程。C语言汇编语言机器语言编译汇编一个简单的C的程序voidmain(void){charP0,LED;//P0是端口0,LED是发光二极管输出P0=0x24;LED=0x35;While(1);}C语言程序设计要点标识符关键字数据类型表达式基本语句函数存储类型预处理标识符标识符用来定义常量、变量、函数、标号以及用户定义对象的名称。说明:标识符由数字和字母组成,但第一个字符必须是字母或下划线。C语言中大、小写字母被认为是不同符号。例如:at、AT、At就是三种不同的标识符。标识符命名的良好习惯──见名知意:所谓“见名知意”是指,通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名。例如:name(姓名)、sex(性别)、age(年龄)。关键字关键字是一种已经被编译器定义过的标识符,具有特定的含义,因此也称作保留字,意义是不可以再被用户定义。下表列出了ANSIC定义的标准关键字。关键字数据类型F2812支持的基本数据类型数据类型字长/b最小值最大值Signedchar16-3276832767Char,unsignedchar16065535Short,signedshort16-3276832767Unsignedshort16065535Int,signedint16-3276832767Unsignedint16065535Long,signedlong32-21474836482147483647Unsignedlong3204294967295Float321.17e-383.4e+38Double321.17e-383.4e+38在CCS中将常用的数据类型重新定义如下:Typedefintint16;Typedeflongint32;TypedefunsignedintUint16TypedefunsignedlongUint32;Typedeffloatfloat32;Typedeflongdoublefloat64;数组数组是一些同类型数据的有序结合,它们存储在内存的一个连续存储区域。定义:数据类型数组名[常量表达式];引用:数组名[下标]说明:定义中的数据类型指的是数组元素的数据类型,它们可以是基本数据类型,也可以是构造类型。常量表达式表示的是数组容量,也叫数组长度。数组名可以是任何C语言的合法标识符,相当于数组的首地址。占用空间:所有成员占用空间之和。注意:在硬件编程中很少使用多维数组,所以此处没有讲述。举例初始化:在定义数组时对数组元素赋以初值,如下:intage[4]={31,29,32,15};如果想使一个数组全部元素为0,可以写成:intage[4]={0};引用:C语言规定只能逐个引用数组元素而不能引用整个数组。例如将数组age[4]={31,29,32,15}的全部元素之和赋给a,代码如下:intage[4]={31,29,32,15};inta;a=age[0]+age[1]+age[2]+age[3];结构体结构体是将不同类型的数据按一定顺序存放在一起的数据结构。定义在声明类型的时候同时定义变量,形式为:struct结构体名{成员表列}变量名表列;直接定义结构体类型变量,形式为:struct{成员表列}变量名表列;引用:结构体变量名.成员名结构体说明:类型与变量不能混淆,只能对变量赋值。结构体的成员可单独使用,相当于普通变量。成员本身可以是一个结构体。占用空间:所有成员占用空间之和。举例定义一个结构体名为student的结构体,有两个变量为student1和student2,对变量student1的成员no赋值25,并将student1的成员no赋值给student2的成员no,如下:structstudent{intno;/*学号*/charname[8];/*姓名*/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的各位中逐个存放,如果小于一个字节,也将占用一个字节。举例struct{unsignedcharP1OUT_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枚举型名变量名表列;引用:变量名举例定义:Enumweekday{sun,mon,tue,wed,thu,fri,sat}day;引用:Day=sun;指针型指针变量:一种特殊的变量,它在内存中保存的不是一般的数值,而是另一个变量的地址。间接存取方式:通过指针来实现数据访问的方法。定义:数据类型*指针变量名;取地址运算符“&”,引用形式:&变量。取内容运算符“*”,引用形式:*指针变量。举例intdata[5]={0};int*pointer=data;chari;inttest;for(i=0;i5;i++){*pointer=i;pointer++;}常量与变量常量定义:指在运行过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。如12、3.5、’A’等。分类:整型常量、实型常量、字符常量、字符串常量、布尔常量。举例:constUint16x;形式一#defineSCI_IO0x0030;形式二变量:指在运行过程中其值可以改变的量,变量是需要用名字来标识的。表达式运算符:又称操作符,是一个符号,它指示在一个或多个操作数上完成某种运算操作或动作。算术运算符:+、−、*、/、%、++、−−;关系运算符:、=、==、!=、、=;逻辑运算符:!、&&、||;位运算符:、、~、|、^、&;赋值运算符:=、+=、−=、*=、/=、%=;条件运算符:?:;逗号运算符:,;指针运算符:*、&;求字节数运算符:sizeof;强制类型转换运算符:(类型);其它运算符;· 、》-、( )、[]等。操作数:是运算符的操作对象,可以是常量、变量、函数与表达式。算术运算符+、-(减法/取负)、*、/、%(求余数)、++、−−。说明:两个整数相除,其商为整数,小数部分被舍弃。例如,5/2=2。余数运算%要求两侧的操作数均为整型数据,否则出错。关系运算符关系运算符用于判别两个值之间的关系,判别的结果只有真和假两种结果。判别结果为真,则表示为1,判别结果为假则表示为0。关系运算符有以下几种:、=、==、!=、、=。说明:关系运算有、=、==、!=、、=,、=、、=的优先级相同,==、!=的优先级相同,前者的优先级高于后者。逻辑运算符!、&&、||。说明:逻辑运算符的结果为逻辑量,不同于位运算。&&和‖是一种短路运算。所谓短路运算,是指在计算的过程中,只要表达式的值能确定,便不再计算下去。逻辑与运算时,计算到某个操作数为假,可以确定整个表达式的值为假时,剩余的表达式部分便不再计算。逻辑或运算时,计算到某个操作数为真,可以确定整个表达式的值为真时,剩余的表达式部分便不再计算。位运算符、、~、|、^、&。说明:按位取反运算用来对一个二进制数按位取反,即0位变1,1位变0。按位与运算的规则是操作数的对应位为1,则该位的运算结果为1,否则为0。按位或运算的规则是操作数的对应位都为0,则该位的运算结果为0,否则为1。按位异或运算的规则是操作数的对应位相同,则该位的运算结果为0,否则为1。赋值运算符赋值运算符为“=”,作用是将右边表达式的值赋给等号左边的变量。如:i=3。复合赋值运算符:在基本赋值运算符“=”之前加上任一双目算术运算符及位运算符可构成复合赋值运算符,又称带运算的赋值运算符。一般形式:变量☆=表达式等价于:变量=变量☆表达式说明:☆代表任一双目算术运算符或位运算符。例如:chari;i=3;条件运算符条件运算是三目运算,有三个操作数,一般形式如下:表达式1?表达式2:表达式3说明:表达式1必须为逻辑表达式,是条件运算的条件。如表达式1为真,则计算表达式2,并以此作为整个表达式的值;如表达式1为假,则计算表达式3,并以此作为整个表达式的值。举例:ab?a:b表示若a大于b,则表达式的值为a;若a小于b,则表达式的值为b。实际上是求a、b的最大值。基本语句条件语句开关语句循环语句if语句单分支i

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功