请问这个字符数组在内存中是如何被分配的?
首先是程序:#include <stdio.h>
int main(void)
{
printf("%c%c%c%c%c!\n",
"ghi"[1], *("def" + 1),
*"abc" + 11, "klm"[1], *"ghi" + 8);/* print "hello!"*/
return 0;
}
这个程序的输出是hello.而且是经过很多次重复编译和运行,都得到hello.
其中有一个地方我很不理解,当程序运行时候,这个字符数组是如何被分配的?因为按照我的理解,不应该输出hello,输出的应该是:he*l*!其中*号是任意字符.
因为我的理解.定义了5个字符数组.在初始化时候,应该是只有引号内的内容是固定的,加上\0以后,其他位置应该是一个随机字符.如果说26个字母排列这 么整齐,那么会不会是在运行程序初就有一个位置负责排列,再5个由于都只是指针.所以只是把指针的位置固定好,并且指向的内容就是这个一个26个字母表的 顺序位?
请各位帮忙回答下.谢谢