gpt4 book ai didi

c - 二维数组和指针 - C

转载 作者:太空狗 更新时间:2023-10-29 15:56:17 26 4
gpt4 key购买 nike

只是想真正了解 C 中的数组和指针以及它们之间的区别,并且在使用二维数组时遇到了一些麻烦。

对于普通的一维数组,这是我学到的:

char arr[] = "String constant";

创建一个字符数组,变量 arr 将始终表示初始化时创建的内存。

char *arr = "String constant";

创建一个指向 char 的指针,该指针当前指向 char 数组“String constant”的第一个索引。指针稍后可能会指向其他地方。

char *point_arr[] = {
"one", "two","three", "four"
};

创建一个指针数组,然后指向字符数组“一”、“二”等。

我的问题

如果我们可以同时使用:

char *arr = "constant";

char arr[] = "constant";

那为什么我不能使用:

char **pointer_arr = {
"one", "two", "three", "four"
};

代替

char *pointer_arr[] = {
"one", "two", "three", "four"
};

如果我尝试使用 char ** ,则会收到类似“标量初始值设定项中的多余元素”的错误。我可以通过使用 calloc 专门分配内存来使 char** 示例工作,但因为我不必使用 char *arr = "blah ";。我不明白为什么有必要,所以我真的不明白它们之间的区别:

char **arr_pointer;

char *arr_pointer[];

非常感谢您的建议。

最佳答案

参见 this answer in the C FAQ :

那里解释了 char []char *。同样的事情可以扩展到 char *[] vs char **

关于c - 二维数组和指针 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com