c语言编译 int ** ppa = &(&a); 出错

alexander068 2008-07-28 05:35:34
以下写法可不可以编译通过?请讲述原因。
int a;
int ** ppa = &(&a);
...全文
181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JIGSONG 2008-07-28
  • 打赏
  • 举报
回复
多此一举

int a;
int *pa = &a;

还是不要胡思乱想
[Quote=引用楼主 alexander068 的帖子:]
以下写法可不可以编译通过?请讲述原因。
int a;
int ** ppa = &(&a);
[/Quote]
iamliadai 2008-07-28
  • 打赏
  • 举报
回复
一句话 &a 没有内存空间
ouyangdongfang 2008-07-28
  • 打赏
  • 举报
回复
int a;
int ** ppa = &(&a);
因为使用一次取地址(&a)就是一个地址值了,是一个常量了,
再使用&(.....)就没有意义了,

如果你想使用二级指针来指向a的话,
可以这样子来定义:

int a;
int *p=&a;
int **ppa=&p;
充电宝111 2008-07-28
  • 打赏
  • 举报
回复
常量不能取地址的
freedowwar3 2008-07-28
  • 打赏
  • 举报
回复
&a就是取变量a的地址,&(&a)没有意义
coverallwangp 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
&a表示的是以a的地址为右值,int*为类型的临时值

有可能是编译时直接确定这个值,有可能是经过一些操作,放在寄存器里的.

&a这个整体在哪里来的地址?
[/Quote]
alexander068 2008-07-28
  • 打赏
  • 举报
回复
Proteas 请讲详细点。小弟刚学,还是不太明白啊。
Proteas 2008-07-28
  • 打赏
  • 举报
回复
取的是常量的地址:
int * pI = & 2;
???
baihacker 2008-07-28
  • 打赏
  • 举报
回复
&a表示的是以a的地址为右值,int*为类型的临时值

有可能是编译时直接确定这个值,有可能是经过一些操作,放在寄存器里的.

&a这个整体在哪里来的地址?

69,382

社区成员

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

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