C语言笔记

发布 2021-05-12 01:10:28 阅读 9284

第一节嵌入式c与标准c的区别。

1、嵌入式c比标准c多了一些与硬件相关的定义。(1)、多了位数据类型。(2)、中断处理函数。

(3)、特殊功能寄存器。2、c语言的特点(1)、可读性强。(2)、可移植性强。

(3)、健壮性。(4)、条理清晰。(5)、模块化设计。

3、嵌入式c的主要特点。(1)、简洁紧凑、灵活方便。(2)、运算符丰富。

3)、嵌入式c是结构式语言。

4)、嵌入式c语法限制不太严格、程序设计自由度较大。

5)、嵌入式c程序生成**质量高、程序执行效率高。(一般只比汇编程序生成的目标**效率低10%—20%)

6)、嵌入式c语言适用范围大、可移植性好。

7)、嵌入式c突出应用场合。第二节、数据类型1、基本的数据类型。

1)、bit(位型)、char(字符型)、int(整型)、longint(长整型)、float(浮点型或实型)。

bit占1位char占8位。

int占16位,在arm里面占32位long int占32位,在arm里面占64位float占32位。

2)、sbit特殊功能寄存器中的位,定义位寻址区中的位。例如:sbit a=m^0;a是m的第0位。

3)、有符号和无符号。

unsigned char无符号字符型,数据范围0~255char有符号字符型,数据范围-128~127unsigned int无符号整型,数据范围0~65535int有符号整型,数据范围-32768~32767(4)、在定义字符常量时要用单引号。例如:chara;

a=‘a’;字符在内存中是以ascii码值存放的。在定义字符串常量时要用双引号。

第三节、变量、数组、函数、指针的定义。

1、变量的定义。

类型+变量名;例如:inta;定义a是一个整型变量,在c51中占16位,也就是两个字节。范围(无符号,0~65535。

有符号的,-32768~32767)。同理也可以定义为字符型、长整型、位型或浮点型等等。2、数组的定义。

1)一维数组的定义及引用。

定义:数组类型+数组名+下标;例如:intshu[10];其中int为数组类型,也就是数组中的元素类型为整型,shu为数组名,也是数组的首地址,为数组下标,下标里面为常量表达式。

10为数组里面元素的个数。

2)一维数组的引用。

int a[10];

t=a[1];把数组中的第二个元素赋值给变量t,数组中的元素下标是从0开始的。

一维数组的初始化。

intshu[10]=;这表明数组中共有十个元素,前五个元素分别为12,43,2,5,9。后五个元素都为0。另外shu[10]中括号里的10可以省略不写。

(注意:intshu[10]=;和intshu=是不一样的,第一个数组表示里面共有十个元素,后。

面六个都是0;而第二个数组则表示里面共有四个元素,系统会自动定义数组a的长度为4。

3)、二维数组的定义、初始化及引用定义:类型+数组名+[下标][下标];例如:int a[3][4];表明定义一个3行4列的二维数组a;定义一个整型的二维数组,int a[2,3];这样写是错误的。

在书写时应注意数组的范围,例如:int a[3][4];

a[3][4]=2;(错误),数组a的行下标范围应该0~2;列下标范围0~3;而a[3][4]超出了数组的范围。二维数组的初始化例如:

int a[2][3]=,它等价于数组inta[2][3]=;行可以省略,也可以写成int a[3]=;注意:(列不能省略)二维数组的引用和一维数组一样。

4)、字符数组定义:char a[5];

初始化:char a[5]=;字符串结束标志位\0。

5)、字符串处理函数。

puts(字符数组);其作用是将一个字符串输出到终端显示。

gets(字符数组);其作用是从终端输入一个字符串。strcat(字符数组1,字符数组2);其作用是连接两个字符数组中的字符串,把字符串2连接到字符串1的后面,把结果放在字符数组1中,函数调用后得到一个函数值—字符数组1的地址。

strcpy(字符串1,字符数串2);其作用是将字符串2复制到字符串1中。(注意:字符串1的空间必须足够大,以便容纳被复制的字符串;\0也一起被复制);赋值语句只能将一个字符赋给一个字符变量,对于一个字符串复制时必须用strcpy。

strncpy(str1,str2,n);其作用是将字符串2中的前n个字符复制到字符串1中,取代字符串1最前面的n个字符,但是n不应大于字符串1中原有的字符串长度。strcmp(str1,str2);其作用是比较str1和str2;比较的规则是:两个字符串从左到右逐个字符相比(按ascii码的大小比较),直到出现不同的字符为止或者遇到\0,如果全部字符都相同,则str1==str2。

否则以第一个不相同的字符比较的结果为准,来确定大小,注意英文字母的大小写。)如果str1==str2;则函数值为0;str1>str2;函数返回一个正数;str1strlen:测字符串长度函数。

(\0不包含在内)

strlen(字符数组);

strlwr:转换为小写字符串函数;strlwr(字符串);

strupr:转换为大写字符串函数;strupr(字符串);

6)、函数的定义:类型+函数名(参数)类型:表示函数的返回值的类型;若为void则没有返回值。

参数:有实参和形参之分;实参是在函数被调用时候用来进行参数传递的,形参是在函数定义时用来接收实参传递的值。(参数传递只能是实参向形参传递,不能倒过来,而且实参必须为常数)

在函数调用之前要对函数进行声明,声明的格式和定义时完全一样,只要复制就行了。

7)、指针的定义:类型+*变量名;

类型:表明指针所指向的类型。例如:char *a;表明指针所指向的类型为字符型,不能指向其它的类型。小知识:在做电子表程序时循环次数在18800左右(不用中断)。

8)、如果把一个数组的首地址赋给一个指针,那么就可以把这个指针当做这个数组进行使用。第四节、运算。

1、除号和求整的区别?在写的时候分母要加上小数点。

1、sprintf的用法:首先包含在<>头文件里面定义一个数组用来存放打印的东西;

格式:sprintf(数组,“打印的东西”,要打印的标示)例如:char temp[64];sprintf(temp,“k=%d”,k);

把一个字符串打印到一个数组里面,可以在屏上显示出来。10、

在c语言编译时,出现notinformalparameterlist怎么办?解决方法:把相应的函数放在头文件里面声明一下。在主函数里面包含以下该头文件。11、

在c51单片机编程时,包含的头文件名字要与保存文件夹的名字一致例如:include“那么在inc里面放的头文件应该是否则可能出现打不开该文件的错误。

12、比需以大写字母开头,不能以数字开头#ifndefds1602_h#defineds1602_h#endif

五、库函数在使用。

sprintf

时。sprintf(buf,"tmpl=%x

tmph=%x",tmpl,tmph);tmpl在buf里面是占空间的buf[0]=t,%x是以16进制打印输出,tmpl=可以不要,buf[0]= tmpl的值的第一位。

C语言笔记

第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...

C语言笔记

c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...

c语言笔记

1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...