首页 新闻 会员 周边

C++指针问题

0
悬赏园豆:20 [已解决问题] 解决于 2018-03-06 18:37
double *p;
cout << *(p + 1);

为什么可以输出*(p+1)
阿克西斯教成员污米饭的主页 阿克西斯教成员污米饭 | 初学一级 | 园豆:129
提问于:2018-03-06 14:50
< >
分享
最佳答案
0

double *p; (指针需要初始化!)表示定义了一个指向double的指针(指向首地址)

而p+1 则表示指针指向首地址的第二个元素,

*(p+1) 表示指针指向的实际数据 

收获园豆:10
瓦楞球 | 初学一级 |园豆:180 | 2018-03-06 15:04
其他回答(1)
0

你这样写的错误的,定义的*p指针没有指向任何地址,*(p+1)输出会报错。

 double a[2]={0,1};
    double *p =a;
    cout<<*(p+1);

这样的话可以输出1

收获园豆:10
Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-06 14:59

double *p;
cout << *(p + 1);输出-1.13838e+22

@阿克西斯教成员污米饭: 定义的指针没有初始化,会指向任意一个地址,所以*(p+1)可以输出。如果定义的指针是空的,不指向任何地址。就会报错。

支持(0) 反对(0) Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-06 18:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册