为什么不能给*p赋值呢?

hnliuzesen 2011-05-17 11:21:30
#include <iostream>
using namespace std;

int main(void)
{
int *p;
int temp = 9;
*p = temp; //这里错误,但是改为p = &temp就对
cout<<"The value at p:"<<*p;
return 0;
}

p是指针,加*就是地址内的数据,为什么不能给这个地址内的数据赋值呢?
而且编译不错误,运行出错。
...全文
1370 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
h100037 2011-05-17
  • 打赏
  • 举报
回复
指针没指向具体的内存地址, 是野指针

要分配空间
jernymy 2011-05-17
  • 打赏
  • 举报
回复 1
[Quote=引用 1 楼 ljt3969636 的回复:]
C/C++ code

int main(void)
{
int *p;//p是野指针指向哪不一定
int temp = 9;
*p = temp; //不能直接给野指针指向的内存写数据
p = &temp;//改变指针指向让它不野,这样可以
cout<<"The value at p:"<<*p;
return 0;
}


C/C++ code
……
[/Quote]


支持+1

pmars 2011-05-17
  • 打赏
  • 举报
回复
int main(void)
{
int *p;
int temp = 9;
*p = temp; //这里错误,但是改为p = &temp就对
cout<<"The value at p:"<<*p;
return 0;
}

因为*p = temp;是赋值,而p没有内存块,没有给他指定内存,而p = &temp 就让p指向了temp的地址。。。没有关系。。
yjueqtd 2011-05-17
  • 打赏
  • 举报
回复
*P是一个指向地址的指针,temp是一个值,一个值怎么能赋值给一个地址呢,可以把temp转换成地址才能相等。
ljt3969636 2011-05-17
  • 打赏
  • 举报
回复

int main(void)
{
int *p;//p是野指针指向哪不一定
int temp = 9;
*p = temp; //不能直接给野指针指向的内存写数据
p = &temp;//改变指针指向让它不野,这样可以
cout<<"The value at p:"<<*p;
return 0;
}





int main(void)
{
int *p=new int;//让P有自己的空间
int temp = 9;
*p = temp; //p有自己的空间了,也可以了
cout<<"The value at p:"<<*p;
return 0;
}

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧