我正在学习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
3条答案
按热度按时间cwdobuhd1#
p
和a
之间没有关系。p
指向无效内存,取消引用或分配给它是未定义的行为。如果您 * 希望 * 对
p
的修改影响a
,则需要设置它指向的位置。w1e3prcc2#
Silvio的答案是正确的。当处理器甚至无法尝试所请求的内存访问时,就会发生总线错误。这通常发生在使用地址不满足对齐要求的处理器指令时。
您可以阅读更多关于here的信息。
nzk0hqpo3#
你需要把变量a的地址赋给指针p。
现在,如果你将指针的值改为15,它将被反映到变量a,你不会得到错误。