gpt4 book ai didi

c - char *a[]= {"hello", "world"}; 之间有什么区别?和 char a[][10]= {"hello", "world"};?

转载 作者:行者123 更新时间:2023-12-04 09:37:20 28 4
gpt4 key购买 nike

当我尝试这段代码时

char *a[] = {"hello", "world" };
char **p = a;
char a[][10]={"hello", "world"};

我的编译失败了,我被告知变量 a 存在类型冲突错误。顶部声明与底部声明有何不同?

最佳答案

这是内存布局的图片。这对应于代码:

char *a[2] = { "hello", "world" };
char **p = a;
char b[][10] = { "hello", "world" };
char **q = b; // Error

Memory layout diagram

红色 = 字符数组,绿色 = 指向字符的指针,青色 = 指向字符的指针。

char **(即指向char *的指针)只能指向char *变量,不能指向char大批 。

如您所见,名为pchar ** 指向一个char * 的存储。

但是q可以指向哪里呢?没有正确类型的变量。如果您想直接指向 bb 的行,那么您需要一个指向 char 数组的指针(而不是指向 char 指针的指针)。

关于c - char *a[]= {"hello", "world"}; 之间有什么区别?和 char a[][10]= {"hello", "world"};?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349098/

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