指针p, 能否直接访问*p

zoumengdiefly 2008-12-21 10:45:25
定义
int *p;
*p = 10; //能否不指定p的指向而直接给*p赋值?

书上好像可以, 用c-free测试也可以, 可是我以前好像记得不能这样, 是我记错了吗? 谁用vs试试(我没装)? 或高手指教下?
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-12-21
  • 打赏
  • 举报
回复
这个跟你用不用vs,还是gcc都没关系,你只要记住,指针一定要指向分配了的空间才能使用

对于你的例子,就应该是

int* p = new int;
*p = 10;

...

delete p;
zoumengdiefly 2008-12-21
  • 打赏
  • 举报
回复
谢谢各位了, 看来我还是装个vs吧, 毕竟在这方面ms是老大.
chenzhiyubuaa 2008-12-21
  • 打赏
  • 举报
回复
不可以的
rabbii 2008-12-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qyshooter 的回复:]
指针是要指向一个地址的,然后可以通过这个指针来访问这个地址。
定义指针变量int *p只不过分了个地方放p,但是p没有初始化,指向的地址就是随机的。
再直接*p = 10,不知道这个10写到哪儿去了。
[/Quote]

我感觉应该检查严格的编译器会报错吧~~~
lann64 2008-12-21
  • 打赏
  • 举报
回复
就像你到ATM上,随便输入一个帐户,然后往里面存钱。 It is dangerous !
非完美主义者 2008-12-21
  • 打赏
  • 举报
回复
指针是要指向一个地址的,然后可以通过这个指针来访问这个地址。
定义指针变量int *p只不过分了个地方放p,但是p没有初始化,指向的地址就是随机的。
再直接*p = 10,不知道这个10写到哪儿去了。
9527他大爷 2008-12-21
  • 打赏
  • 举报
回复
这就是传说中的野指针,实际上是可以用的, 只是p指向的内存不是你的,这样使用相当危险
forcal 2008-12-21
  • 打赏
  • 举报
回复
目前p是个野指针,指向的地址未知,*p = 10 将把整数10写到该地址,不可以的。
xiaoyisnail 2008-12-21
  • 打赏
  • 举报
回复
不可以,行为未定义,运行时错误

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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