资源描述:
《c语言基础知识总结》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1.++和--自增运算符和自减运算符:前缀和后缀两种情况1)表达式++n先将n的值递增1,然后再使用变量n的值:如果n的值为5,x=n++;执行后的结果,x的值置为5,n=62)表达式n++先使用变量n的值,然后再将n的值递增1:如果n的值为5,x=++n;执行后的结果,x的值置为6,n=6在不需要使用任何具体值且仅需要递增变量的情况下,前缀方式和后缀方式效果相同。2.return、exit区别调用一个函数,此函数的入口地址会被保存起来,放在某个确定的寄存器中,函数结束前的return语句会找到函数
2、地址,然后在被调用函数结束后,执行其下一条语句。exit使进程直接终止3.结构体相关知识点(重点)1)聚合数据类型:能够同时存储超过一个的单独数据。C语言提供两种类型的聚合数据类型,数组和结构体。结构体也是一些值的集合,这些值称为它的成员,一个结构体的各个成员可以有不同的类型。每个结构体有自己的名字,它们通过名字访问结构体成员。2)结构体声明与定义:声明的一般形式:a.structstudent{intnum;charsex[5];charaddr[10];};structstudents1,s2;
3、b.在声明类型的同时定义变量struct结构体名{成员列表}变量名表列;c.直接定义结构体类型变量:struct{成员表列}变量名表列;(即不出现结构体名)注意:声明结构时,可以使用另一种良好的技巧,即用typedef创建一种新的数据类型,如:typedefstruct{intnum;charname[10];charsex;}Person;此时Person是个类型名而不是一个结构标签,所以后续的声明可以是:Personx;Persony[20],*z;3)结构体成员的访问structCOMPLEX
4、{floatf;inta[20];long*lp;structSIMPLEs;structSIMPLEsa[10];structSIMPLE*sp;};a)结构成员的直接访问:通过点操作符(.),例如:structCOMPLEXcomp;我们要访问comp这个结构体变量中inta[20]这个成员,可以用:comp.a;点操作符的结合性是自左向右,如((comp.sa)[4]).f,可以直接comp.sa[4].f;b)结构体成员的间接访问:如果我们拥有一个指向结构体的指针,如voidfunc(str
5、uctCOMPLEX*cp);我们要访问这个结构体的成员f,那么(*cp).f;=====>>.操作符的优先级高于*,所以我们必须要加(),这个操作有点麻烦,所以C语言定义了一个更为方便的操作符:->(箭头操作符),cp->f就可以达到同样效果。注意:->的左操作数必须是一个指向结构体的指针。c)结构体的自引用例1:structSELF1{这个结构体的自引用是非法的,因为成员b是另一个inta;完整的结构,其内部还包含它自己的成员b,然后它的第二structSELF1b;个成员又是一个完整的结构b,
6、这样一直重复下去。};例2:structSELF1{这个是合法的,区别在于:b现在是一个指针而不是inta;结构。编译器在结构长度确定之前就已经知道了指针的长structSELF1*b;度,所以这种类型的自引用是合法的。};例3:typedefstruct{typedefstructSELF_REF1{inta;inta;SELF1*b;(此处SELF1尚未定义)structSELF_REF1*b;//解决方案:定义一个结构标签来声明b}SELF1;}SELF1;这个是错误的。这个是正确的。4)结构
7、体的初始化结构体初始化和数组初始化很相似。一个位于一对{}花括号内部、由逗号(,)分割的初始值列表可用于结构体各个成员的初始化.如果初始列表的值不够,剩余的结构成员将使用缺醒值进行初始化。例如:structINIT_EX{inta;shortb[10];Simplec;}x={10,{1,2,3,4,5},{25,'x',1.9}};也可以使用一条简单的赋值语句将一个结构体变量的值赋给另一个相同类型的结构体变量。例如:如果book1和book2是同一类型结构体变量,则book2=book1;此语句有
8、效。5)结构体的内存分配structALIGN{structALIGN2{chara;1个字节intb;4个字节intb;4个字节chara;1个字节charc;1个字节一共用去12个字节charc;1个字节一共用去8个字节。};};注意:我们在声明中对结构体列表重新排列,让那些边界要求最为严格的成员首先出现,对边界要求最弱的成员最后出现。sizeof操作符能够得出一个结构体的整体长度,包括因边界对齐而跳过的那些字节。如果你必须确定结构某个成员的实际位置,应该考虑边界