Fra*_* G. 1 c arrays string initialization
在 C 中,可以使用以下代码行初始化字符串数组:
char *exStr[] = { "Zorro", "Alex", "Celine", "Bill", "Forest", "Dexter" };
Run Code Online (Sandbox Code Playgroud)
在我的调试器上,数组初始化如下:
这与标准二维数组不同,标准二维数组中每个字符串占用相同的字节数;有人可以指出我正确的方向来理解:
声明“char *exStr[] = ...”的确切含义是什么;
它的意思是“从 poniter 到 char 的数组”。像“Zorro”这样的文字的字符数据通常放置在只读数据段中,数组元素仅包含文字的第一个字符的地址。
如何从我的程序中重新创建相同变量的结构。
你可以这样做:
char zorro[] = {'Z', 'o', 'r', 'r', 'o', '\0'}; // initialized every char for clarity
char alex[] = "Alex";
char celine[] = "Celine";
...
char* exStr[] = {
&zorro[0], // explicitly referenced for clarity
alex,
celine,
...
};
Run Code Online (Sandbox Code Playgroud)