目录
1.野指针
2.assert断言
3.指针的使用和传址调用
4.数组名的理解
5.使用指针访问数组
6.总结
1.野指针
概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
1.1野指针的成因
1.1.1指针未初始化
1 #include <stdio.h>
2 int main()
3 {
4 int *p;//局部变量指针未初始化,默认为随机值
5 *p = 20;
6 return 0;
7 }
1.1.2. 指针越界访问
1 #include <stdio.h>
2 int main()
3 {
4 int arr[10] = {
0};
5 int *p = &arr[0];
6 int i = 0;
7 for(i=0; i<=11; i++)
8 {
9 *(p++) = i;//当指针指向的范围超出数组arr的范围时,p就是野指针
10 }
11 return 0;
12 }
1.1.3. 指针指向的空间释放
1 #include <stdio.h>
2 int* test()
3 {
4 int n = 100;
5 return &n;
6 }
7 int main()
8 {
9 int*p = test();
10 printf("%d\n", *p);
11 return 0;
12 }
注意:避免返回局部变量