- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言基础识总结
1.++和--
自增运算符和自减运算符:前缀和后缀两种情况
1)表达式++n先将n的值递增1,然后再使用变量n的值:如果n的值为5,x = n++; 执行后的结果,x的值置为5, n=6
2)表达式n++先使用变量n的值,然后再将n的值递增1:如果n的值为5,x = ++n; 执行后的结果,x的值置为6, n=6
在不需要使用任何具体值且仅需要递增变量的情况下,前缀方式和后缀方式效果相同。
2.return、exit区别
调用一个函数,此函数的入口地址会被保存起来,放在某个确定的寄存器中,函数结束前的return语句会找到函数地址,
然后在被调用函数结束后,执行其下一条语句。
exit使进程直接终止
3.结构体相关知识点 (重点)
1)聚合数据类型:能够同时存储超过一个的单独数据。C语言提供两种类型的聚合数据类型,数组和结构体。
结构体也是一些值的集合,这些值称为它的成员,一个结构体的各个成员可以有不同的类型。每个结构体有
自己的名字,它们通过名字访问结构体成员。
2)结构体声明与定义:
声明的一般形式:
a.struct student{int num;char sex[5];char addr[10];}; struct student s1,s2;
b.在声明类型的同时定义变量 struct 结构体名{ 成员列表 }变量名表列;
c.直接定义结构体类型变量: struct {成员表列}变量名表列;(即不出现结构体名)
注意:声明结构时,可以使用另一种良好的技巧,即用typedef 创建一种新的数据类型,如:
typedef struct{int num;char name[10];char sex;}Person;
此时Person是个类型名而不是一个结构标签,所以后续的声明可以是:Person x; Person y[20],*z;
3)结构体成员的访问
struct COMPLEX{ float f;int a[20];long *lp;struct SIMPLE s;
struct SIMPLE sa[10];struct SIMPLE *sp; };
a)结构成员的直接访问: 通过点操作符(.),例如:struct COMPLEX comp;我们要访问comp这个结构体变量
中int a[20]这个成员,可以用:comp.a; 点操作符的结合性是 自左向右,如((comp.sa)[4]).f,可以直接comp.sa[4].f;
b)结构体成员的间接访问: 如果我们拥有一个指向结构体的指针,如 void func(struct COMPLEX *cp); 我们要访问这个
结构体的成员f,那么 (*cp).f;=====.操作符的优先级高于*,所以我们必须要加(),这个操作有点麻烦,所以C语言定义了一个
更为方便的操作符:-(箭头操作符),cp-f就可以达到同样效果。
注意:-的左操作数必须是一个指向结构体的指针。
c)结构体的自引用
例1:struct SELF1{ 这个结构体的自引用是非法的,因为成员b是另一个
int a; 完整的结构,其内部还包含它自己的成员b,然后它的第二
struct SELF1 b; 个成员又是一个完整的结构b,这样一直重复下去。
};
例2:struct SELF1{ 这个是合法的,区别在于:b现在是一个指针而不是
int a; 结构。编译器在结构长度确定之前就已经知道了指针的长
struct SELF1 *b; 度,所以这种类型的自引用是合法的。
};
例3:typedef struct{ typedef struct SELF_REF1{
int a; int a;
SELF1 *b;(此处SELF1尚未定义) struct SELF_REF1 *b;//解决方案:定义一个结构标签来声明b
}SELF1; }SELF1;
这个是错误的。 这个是正确的。
4)结构体的初始化
结构体初始化和数组初始化很相似。一个位于一对{}花括号内部、由逗号(,)分割的初始值列表可用于结构体各个成员的初始化.
如果初始列表的值不够,剩余的结构成员将使用缺醒值进行初始化。
例如:struct INIT_EX{
int a;
short b[10];
Simple c;
}x = {10,{1,2,3,4,5},{25,x,1.9}};
也可以使用一条简单的赋值语句将一个结构体变量的值赋给另一个相同类型的结构体变量。例如:如果bo
文档评论(0)