C和指针之部分理解和编码总结
【摘要】 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的乱码
-
#include <stdio.h>
-
#include <assert.h>
-
-
-
int main()
-
{
-
char *p = NULL;
-
// char c = 'a';
-
// p = &c;
-
assert(p != NULL);
-
printf("hello");
-
return 0;
-
}
如果我注释了那2行,程序
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/78447349
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)