(C语言知识点总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(C语言知识点总结

fun((w1,w2),(w3,w4,w5)) 含有参数的个数是2个 左半部分是一个逗号表达式,右半部分是一个逗号表达式 。括号括起来的,算是一个表达式,所以一共 2个参数! 类型所占存储字节数 int 2;float 4;double 8;char 1; 一个指针变量中存放的是一个存储单元的地址值;一个存储单元的“一”所代表的字节数是不同的, int 型一个存储单元占用2个字节,float型一个存储单元占用4个字节…… 所以指针类型一定要与指针所指对象的类型保持一致!否则指针在进行移动时,会出错,达不到预期的目的! int型移动到下一个需要“+2”,而double则需要“+8”,如果是int型变量,却用的是double型指针,则想移动到下一个相当于+8,而不是+2, 一下子移动了4个! 所以要保持一致! 除了赋地址值外,还可以给指针变量赋“空”值……eg: int *p=NULL 注意:NULL四个字母都是大写且 p=NULL;等价p=‘\0’;等价p=0; 在使用NULL时,需要在头文件预定义: #include stdio.h NULL的值为0,当执行以上赋值语句后,称P为空指针! ^int *p;^ :在没有定义或赋值给P地址的情况下,P的地址是不确定的,并不一定是空值,而是一个随机的地址,在赋值空值即NULL后 P的值确定为一个空值! 求地址运算符 只能应用于变量和数组元素,不可用于表达式,常量,或register变量!(变量和数组都是有确定地址的,而表达式没有地址,如X+Y,只是调用X的地址中的值,和Y的地址中的值, 再进行运算,表达式本身没有地址;常量有地址,但是常量的地址并不确定,所以也求不出来;而register变量是寄存变量,并不存储于内存当中,而是以其他方式存储,所以在内存当中找不到它的地址!) *就象乘和除一样,两者放在一起可约掉!他们是可以相互抵消的! ++或-- 的优先级别和*的级别是相同的!而+=或-=或*=或/=的优先级别仅高于逗号运算符,它们级别要比*的级别低! ++或--都是自右向左进行结合的,所以++*P先*P,再++,取出物体后将其本身+1,再放回原来的地址; k=100,k++是先K后+,表达式值是100,K=101;++K,是先+后K,即表达式和K的值都是101; *p++是自右向左进行的,先P++,指向原来P所指向的存储单元的下一个单元,再*(P++),即下一个存储单元的内容;所以(*P)++的括号不能 省略,这样才是指“*P中的内容,的本身+1,再放回原来的地址”;记注,++或--运算是自右向左进行的! *叫做“间指运算符”! 只有当指针指向一串连续的存储单元时,指针的移动和比较大小才有意义,一定是“连续的存储单元”! 实参是地址的时候,形参对应的一定是“指针”;如果实参是指针的话,实际上也代表地址,所以形参对应的还是“指针”; 把数据从 被调用函数 返回到 调用函数 的唯一途径是通过return语句返回数值,这就限定了只能返回一个数据!用以下方法可解决想返回多个值的问题! 当调用函数时,在调用函数内部实参是地址值时,且对应的形参是个指针的话,那就可以通过形参的改变来改变实参的值,这样就不必局限于一个 return 语句只能返回一个值了,而是可以返回2个或2个以上的值;但一定要符合上述的应用条件! 当p=a时(P和A存放的都是数组的首地址时),a[i]=*(a+i)=p[i]=*(p+i)且 a[i]=a+i=p+i; *(p--) 相当于M=P--;先算M,P--是先P后-,所以M=P值不变,所以*(p--)=*p; 同理,a[i--]=a[m] M表达式=I--,还是先I后-,所以a[y=i--]=a[y] 括号中的I的值有变化,比原来少1,但表达式y的值没有变化; *--P 自右向左运算,先--P,使P的地址少一个,再取其值; a[--i]还是相当于a[--i]=a[m] m是表达式--i,--I先-后I,I比原来少一个值,再算,即a[i]的前一个数组!; p-- ,m=p--, m=p,再p=p-1; --p ,m=--p ,p=p-1,m=p; 当a和P 是相同地址时的区别: 如果a指 的是数组的话,那么A是不可以改变的,他是定植,而P的值可以改变; 所以 a++,a=p(或其他),p=a(a已经是地址了,不需要再加一个求地址符), 即所有改变A的值的方法 都非法; P++,P=A,P=a[i],即改变P 值的所有方法 都 合法;其余的在A与P的运用求数组上没有区别; 当数组名作为实参时,对应的形参可以为: 调用函数:aaa(int *a)=aaa(int

文档评论(0)

84537592 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档