关与数组名的疑惑

diedknight 2006-05-26 04:11:12
#include <stdio.h>

void main( )
{
char c[20] = "ha";

printf( "&c = %d, &c[0] = %d, c = %d, c[0] = %c *c = %c \n", &c, &c[0], c, c[0], *c );
}

我运行的结果为什么 &c == &c[0] == c
不是自相矛盾?
哪里有问题?期待指点指点
...全文
169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
diedknight 2006-05-29
  • 打赏
  • 举报
回复
谢谢大家

看了大家的这么多说明,终于弄明白了 ~.~
Z_Wing 2006-05-26
  • 打赏
  • 举报
回复
晕,来完了,都说这么清楚了。还是要说一句,楼主的错误在于把数组名c看成了一个变量。
Rain 2006-05-26
  • 打赏
  • 举报
回复
你可以这样理解,数组名就是一个标识,就像引用一样,它不占内存空间,所以&c和c一样
Rain 2006-05-26
  • 打赏
  • 举报
回复
没的问题.数组名的内容就是数组第一个元素的地址。
Ninstein 2006-05-26
  • 打赏
  • 举报
回复
LZ看看这个吧
#include <stdio.h>

void main( )
{
char c[20] = "ha";
char *p;
p = c;

printf( "%x,%x,%x", p,&p,&c);
}


指针常量 指针变量
happytang 2006-05-26
  • 打赏
  • 举报
回复
&c == &c[0] == c
都指的是数组的首地址,一样地
lj860603 2006-05-26
  • 打赏
  • 举报
回复
LZ这样打印的都是字符数组的首地址。
zez 2006-05-26
  • 打赏
  • 举报
回复
就是这样的!!!

数组名字就是它第一个值的地址 !!

69,373

社区成员

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

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