【发布时间】:2013-11-18 14:43:15
【问题描述】:
说你在 C 中有一个字符数组。像这样:
char array[];
现在,下面哪个语句会打印出地址。我知道 1) 和 2) 会,但是 3) 也会打印出地址吗?
1) printf("Arrays adress is %x\n", array);
2) printf("Arrays adress is %x\n", &array[0]);
3) printf("Arrays adress is %x\n", &array);
【问题讨论】:
-
如果需要您的表达来打印地址,则无。每个都调用未定义的行为。
%x用于打印整数值。%p用于打印指针。 -
我认为最好将
%x替换为%p,因为这是指针的正确格式 -
char array[];不会编译!它要么需要被初始化,要么为要获取的元素数量取一个确定的值。 -
@Zaibis:你似乎是对的,因为 gcc 在这个不清楚的陈述上表现得自主,并假设
array有确切的 one 元素。 -
@alk 不,我完全不正确,我检查了它并注意到这根本无效,它只是有效,如果在同一行中完成初始化。
标签: c arrays pointers memory-address