gpt4 book ai didi

c - 为什么我们不两次引用 char 指针数组?

转载 作者:行者123 更新时间:2023-11-30 21:36:34 25 4
gpt4 key购买 nike

例如,假设我有一个 char *arry[] ={"Hi","Hello"} 。所以“Hi”的基地址(假设100)将被存储在arry[0]中。 。那么,要访问 Hi,我们为什么不写 **arry 。因为当我们取消引用 arry 时,“arry”将给出该数组的基地址,我们将得到 100,当我们再次取消引用 100 时,我们将得到“H”。简而言之,我们需要写 **arry 。那为什么我们要写*arry ?当我使用**arry时它给我错误消息“错误:‘ token ’之前的预期标识符”。

最佳答案

当你写的时候

char *arry[];

您正在声明一个指向字符的指针数组arry是一个数组,它的每个元素都是一个指针,可以指向一个char

如果使用两个间接运算符**,则会去除两层间接。这很好,但最终得到的是 char 类型的值,即数组的基本类型。 char 不是字符串。

但这工作得很好

printf("%c\n", **arry);

它打印数组中第一个字符串的第一个字符,或'H'

当您尝试使用 ** 然后打印字符串时它不起作用的原因是,正如我所说,字符串不是字符。 C 语言中的字符串,位于字符数组中。或者,可以通过使用指向 char 的指针(指向字符串的第一个字符)来方便地访问字符串。

因此,如果您想打印字符串,您只想去掉一层间接,而不是两层。您最多需要一个 *。由于字符串可以通过指向 char 的指针方便地访问,因此当您在 printf 中使用 %s 时,它需要的是一个指向 char 的指针。因此,要打印字符串,您需要

printf("%s\n", *arry);

printf("%s\n", arry[0]);

关于c - 为什么我们不两次引用 char 指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386915/

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