这在C++指针中允许吗?

r1zk6ea1  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(108)

我正在学习c++,我发现这一点混淆了指针。它是允许的或可以修改变量int a使用指针变量?
下面是代码:

#include <iostream>
int main(){
    int a ; // int variable 
    int *p ; // pointer 

    a = 10 ;
    *p =15 ; 

    std:: cout << a ;
    return 0; 
};

p = 15会改变a的值吗
我得到错误当我尝试运行代码:

zsh: bus error
cwdobuhd

cwdobuhd1#

pa之间没有关系。p指向无效内存,取消引用或分配给它是未定义的行为。
如果您 * 希望 * 对p的修改影响a,则需要设置它指向的位置。

int a;
int *p = &a;
w1e3prcc

w1e3prcc2#

Silvio的答案是正确的。当处理器甚至无法尝试所请求的内存访问时,就会发生总线错误。这通常发生在使用地址不满足对齐要求的处理器指令时。
您可以阅读更多关于here的信息。

nzk0hqpo

nzk0hqpo3#

你需要把变量a的地址赋给指针p。

p = &a;

现在,如果你将指针的值改为15,它将被反映到变量a,你不会得到错误。

相关问题