You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:35:29