C++指针疑问:能否通过指针修改int变量a?代码报错求解
关于C++指针修改变量值的问题
问题解答
你写的*p = 15不会改变a的值,反而会触发内存错误(也就是你遇到的zsh: bus error)。
错误原因
你声明了指针int *p;,但没给它指定有效的指向——它现在是个「野指针」,指向的是一块随机的、不属于你的内存区域。执行*p =15相当于往非法内存里写数据,这属于C++里的未定义行为,系统直接会拦截并抛出内存访问错误。
正确实现指针修改a值的代码
要让指针能修改a的值,必须先让指针指向a的内存地址。修改后的代码如下:
#include <iostream> int main(){ int a ; // int变量 int *p ; // 指针 a = 10 ; p = &a; // 用&运算符取a的地址,赋值给指针p,让p指向a *p =15 ; // 此时*p就是a的别名,修改*p等同于修改a std:: cout << a ; // 这里会输出15 return 0; };
核心知识点
- 指针是存储内存地址的变量,必须先指向合法内存(比如已声明变量的地址、动态分配的内存)才能使用。
&变量名可以获取该变量的内存地址,把这个地址赋值给指针后,指针就和该变量绑定了。*指针名是指针的解引用操作,代表指针指向的内存里的内容,对它操作就是对指向的变量操作。
内容的提问来源于stack exchange,提问作者Brijesh Gurung
相关产品推荐
相关产品推荐

