C 语言指针常见的错误
C语言指针常见错误,主要有两种情况:
1).指针未初始化;
2).避免使用scanf
给指针赋值;
3).赋值指针为NULL
。
指针未初始化
这种情况:
int i = 10, *p;
*p = i;
printf("*i=%d\n", *p);
指针变量p
是没有初始化的,就是你还没有给他里面赋值地址进去。这种为初始化的情况在高版本的 VS 中是直接编译不过去的;会报错:C4700 使用了未初始化的局部变量“p”
。
避免 scanf
赋值指针
int i = 10, *p;
p = &i; // 初始化 p,指向 i
scanf("%d", p);
这种情况会很容易把原来的i
值,或者指向其他内存位置的值改掉导致软件崩溃,需要谨慎。
赋值指针为NULL
int i = 10, *p = NULL;
*p = i;
printf("%d", *p);
这种情况能编译通过,运行时会报段错误:引发了异常: 写入访问权限冲突。 p 是 nullptr
。需要特别注意。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了