指针问题,高手指点

nanshi08 2007-04-09 11:19:57
main()
{
int **p,*s,k=20;
s=&k;p=&s;

printf("p=%d s=%d",p,s);
}

显示结果有问题啊:
p=-32 s=-34

如果改成

printf("p=%d s=%d",&p,&s);

则显示p=-34 s=-32

这是怎么回事啊?

...全文
353 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰雪球球 2007-04-17
  • 打赏
  • 举报
回复
6楼的回答真是不错噢
JWILLOVE 2007-04-17
  • 打赏
  • 举报
回复
有收获
猪小烧 2007-04-14
  • 打赏
  • 举报
回复
学习
balloonpig 2007-04-14
  • 打赏
  • 举报
回复
呵呵,指向指针的指针,不管几个*号,一个一个的分析下去就行
myullian 2007-04-13
  • 打赏
  • 举报
回复
输出地址不是应该用printf("p=%p s=%p",p,s);
bgqy2000 2007-04-13
  • 打赏
  • 举报
回复
改成
printf("p=%d s=%d",**p,*s);
就没有问题了。
boykim 2007-04-12
  • 打赏
  • 举报
回复
恩,对的;学校的教科书很烂,但这个问题还是说清楚了.
指针变量前不加*号输出地址值;加了*号取内容输出(不包括字符指针.)
pyrophile 2007-04-12
  • 打赏
  • 举报
回复
*号的含义是取地址符
zhourenyun 2007-04-12
  • 打赏
  • 举报
回复
GXC讲的相当不错,尤其是对int** 的解释。
变巨 2007-04-11
  • 打赏
  • 举报
回复
&s表示指针s的地址,该地址的内容保存的是k的地址

*s表示取s指针保存的地址(k的地址)的内容,即k的值

*p表示取p指针的内容,即指针s的地址

**p理解成*(*p)表示取指针(即s)的内容,即k的值
ytfhwfnh 2007-04-11
  • 打赏
  • 举报
回复
基础的指针问题,最好还是自己找本书来看看,我也只能意会不能言传,洋洋洒洒写下来还不如去写书了。
nanshi08 2007-04-11
  • 打赏
  • 举报
回复
3楼什么意思?

我不太明白这个结果到底为什么会这样,如果哪位高手能详细解释一下,或者把原因写出来,小弟我很乐意学习。

nanshi08 2007-04-09
  • 打赏
  • 举报
回复
成功了,但是为什么这样啊?
ytfhwfnh 2007-04-09
  • 打赏
  • 举报
回复
改成
printf("p=%d s=%d",**p,*s);
就没有问题了。
不想低调 2007-04-09
  • 打赏
  • 举报
回复
lz的结果好像有问题,,。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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