我正在尝试打印变量的值,其中一个是指针,第二个只是一个int。
我确实为一个指针-a分配了一个值,而不是指定了一个指向变量的指针。我正在尝试输出变量的值,这意味着显示指针的值,但我无处可去。
由于编译器显示以下警告:
'a'在此函数中使用了单元化
并且最终在编译完成后,我在运行程序时遇到错误,Windows弹出窗口告诉我:
“0x00401359处的指令引用了0x00417c7e处的内存。无法写入内存。单击确定以终止程序。”
这段代码有什么问题?
#include <iostream>
using namespace std;
int main(void)
{
int *a;
int b;
*a = 5;
b = *a;
cout << b << " " << *a;
}
答案 0 :(得分:2)
a
是一个指针,应该指向某处。如果你没有初始化它,它只指向任何地方,因此你的赋值*a=5
试图写入随机存储器地址。
#include <iostream>
using namespace std;
int main(void)
{
int c; // reserves some space for a to point to
int *a = &c; // NOW a is initialized and it points to c
int b;
*a = 5; // writes 5 into the variable c
b = *a;
cout << b << " " << *a;
}
答案 1 :(得分:2)
#include <iostream>
using namespace std;
int main(void)
{
int *a;
int b;
a=&b;
*a = 5;
cout << b << " " << *a;
}
您的指针a没有可以保存此值的变量地址。