正常情况下,定义一个指向整数的指针 p,并且定义一个整数变量 i,赋值为 1,然后将该变量赋值到 *p 上,即 *p = i,这时候打印 p 的值以及 *p 的值分别为变量 i 的地址以及 i 的值,但是如果不再定义整数变量 i ,而是直接将字面量 1 赋值给 *p ,这时候 p 以及 *p 的返回结果都为空,我想请教一下出现这种状况的原因是什么?基于指针的什么特性?
情况一:可以输出指针结果
#include <iostream>
using namespace std;
int main() {
int* p;
int i = 1;
p = &i;
cout << p << endl;
// 0xef16f0
cout << *p << endl;
// 1
return 0;
}
情况二:无返回值
#include <iostream>
using namespace std;
int main() {
int* p;
*p = 1;
cout << p << endl;
// 无返回值
cout << *p << endl;
// 无返回值
return 0;
}
int *p; *p=1; 此时p的地址是野值,对一个野地址解引用非常危险,不确定其会访问并修改那块内存空间的值。