C语言指针常见错误,主要有两种情况:
1).指针未初始化;
2).避免使用scanf
给指针赋值;
3).赋值指针为NULL
。
指针未初始化
这种情况:1
2
3
4int i = 10, *p;
*p = i;
printf("*i=%d\n", *p);
指针变量p
是没有初始化的,就是你还没有给他里面赋值地址进去。这种为初始化的情况在高版本的 VS 中是直接编译不过去的;会报错:C4700 使用了未初始化的局部变量“p”
。
避免 scanf
赋值指针
1 | int i = 10, *p; |
这种情况会很容易把原来的i
值,或者指向其他内存位置的值改掉导致软件崩溃,需要谨慎。
赋值指针为NULL
1 | int i = 10, *p = NULL; |
这种情况能编译通过,运行时会报段错误:引发了异常: 写入访问权限冲突。
p 是 nullptr
。需要特别注意。