之前出的有指针合集在博客,最近要备考计算机二级,所以复习了一下,有一些容易遗忘的点整理了一下,大家可以有针对性的看一看,后续刷二级真题的时候也会进行题目代练,可以下收藏起来。记得先赞,祝大家暑假快乐,备考顺利!!!
1.野指针成因
1.不进行初始化
那指针到底如何初始化呢?
二级真题:
A没有进行初始化
2.指针访问越界
最多到10
3.指针指向的空间释放
n不是在主函数中创建的,因为返回n的地址,n的地址是可以返回来的。
但是出了函数之后创建的n就已经销毁了,这块空间回收了,返回给操作系统了
p变量中依然可以存储地址,但是通过地址p再去找先前的空间是不合理的,已经是野指针了,
就不一定能够找到了
(相当于你告诉了同伴一个可以找到你的当前地址,但是后来你走了,那就肯定不能够再找到你了,地址是不变的,只是这个地址已经无法找到你了)
2.数组名的理解(非常重要)
例:
3.一维数组传参
4.指针数组&数组指针
1.指针数组(存放指针的数组)
2.数组指针变量(指向数组数据的指针,存放数组数据的地址)
相关例题:
常量字符串会单独放到一个内存区域中,所以只要指针指向的是一个字符串那么开辟的就是一个空间。
用字符串去初始化数组的时候会开辟出来不同的内存块。
例题:
数组指针变量初始化:
int(*p)[10] = &arr;
5.赋值字符串
6.assert断言
assert.h 头⽂件
格式:
assert(p != NULL);
如果该表达式为假(返回值为零), assert() 就会报错