首页 新闻 会员 周边 捐助

p 是一个指针,给 *p 赋一个字面值:*p = 1,打印 p 以及打印 *p 的结果为空,原因是什么?

0
悬赏园豆:5 [已关闭问题] 关闭于 2024-04-25 19:51

正常情况下,定义一个指向整数的指针 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;
}
gaotianchi的主页 gaotianchi | 菜鸟二级 | 园豆:211
提问于:2024-04-25 17:37
< >
分享
所有回答(2)
0
gaotianchi | 园豆:211 (菜鸟二级) | 2024-04-25 19:51
0

int *p; *p=1; 此时p的地址是野值,对一个野地址解引用非常危险,不确定其会访问并修改那块内存空间的值。

smileair | 园豆:204 (菜鸟二级) | 2024-06-01 00:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册