C和指针之部分理解和编码总结

举报
chenyu 发表于 2021/07/26 23:37:29 2021/07/26
【摘要】 1、在C语言中,当一维数组作为函数参数的时候,编译器总是把它解析成一个指向成一个指向其首元素首地址的指针      这也就是为什么数组int a[10],a不能a++操作,而把a传递给函数的时候,可以作为指针a++操作的原因。     2、内存为0的地址处,也就是NULL地址处,一般定义指针变量的同时最好初始化为NUL...

1、在C语言中,当一维数组作为函数参数的时候,编译器总是把它解析成一个指向成一个指向其首元素首地址的指针

     这也就是为什么数组int a[10],a不能a++操作,而把a传递给函数的时候,可以作为指针a++操作的原因。

 

 

2、内存为0的地址处,也就是NULL地址处,一般定义指针变量的同时最好初始化为NULL,然后使用完指针之后也将指针变量的值设置为NULL,防止野指针。

 

 

3、如果没有返回值,编译器则默认为函数返回的值是int类型。

 

 

 

4、函数的入口处用assert宏作入口校验
   一般在函数入口处使用assert(NULL != p)对参数进行校验,在非参数的地方使用if(NULL != p)来校验,但是有个要求,是p在定义的同时被初始化为NULL,如果p指针没有被初始化为NULL,其内部是一个非NULL的乱码


  
  1. #include <stdio.h>
  2. #include <assert.h>
  3. int main()
  4. {
  5. char *p = NULL;
  6. // char c = 'a';
  7. // p = &c;
  8. assert(p != NULL);
  9. printf("hello");
  10. return 0;
  11. }

 

 

如果我注释了那2行,程序

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/78447349

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。