隐语者 2021-04-07 14:09 采纳率: 100%
浏览 35
已采纳

C++ 萌新想请教下指针问题

int main(int argc, char* argv[]){
    int a = 50;
    int* _a = &a;
    *_a = 500;
    cout << a << endl;
    return 0;
}
================================
console output: 500

===========================

上面这段是指针_a指向a的内存地址并改值.
前面声明的时候加了 int* _a = &a,
1、为什么不能直接‘_a = 500’
2、为什么_a前面加一个*才能重新赋值(‘*_a = 500’), 请懂的人讲下, 不甚感激!

  • 写回答

2条回答 默认 最新

  • 8号店长 2021-04-07 14:18
    关注

    你可以把int*作为一个数据类型,_a作为变量表示的是一个地址,所以实际是对_a进行赋值a的地址,所以用 取地址符&。

    懂了上面的,你的问题就容易解决了。

    1、_a表示地址,相当于_a是一个箱子,里面装的是a的地址,直接赋值_a 只能修改它指向的地址,不能修改变量a的值。

    2、*的作用就相当于把箱子_a打开,取出里面的地址并找到该地址的变量,此时就能直接赋值了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?