gpt4 book ai didi

c - 在C语言中,带有两个星号(**)的变量声明是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 16:20:54 26 4
gpt4 key购买 nike

我在用 C 工作,但我有点生疏了。我知道 * 有三种用途:

  1. 声明一个指针。
  2. 取消引用指针。
  3. 乘法

但是,变量声明前有两个星号(**)是什么意思:

char **aPointer = ...

谢谢,

斯科特

最佳答案

它声明了一个指向char 指针的指针。

这样一个指针的用法是做这样的事情:

void setCharPointerToX(char ** character) {
*character = "x"; //using the dereference operator (*) to get the value that character points to (in this case a char pointer
}
char *y;
setCharPointerToX(&y); //using the address-of (&) operator here
printf("%s", y); //x

这是另一个例子:

char *original = "awesomeness";
char **pointer_to_original = &original;
(*pointer_to_original) = "is awesome";
printf("%s", original); //is awesome

对数组使用**:

char** array = malloc(sizeof(*array) * 2); //2 elements

(*array) = "Hey"; //equivalent to array[0]
*(array + 1) = "There"; //array[1]

printf("%s", array[1]); //outputs There

数组上的 [] 运算符本质上是对前端指针进行指针运算,因此,array[1] 的计算方式如下:

array[1] == *(array + 1);

这也是数组索引从0开始的原因之一,因为:

array[0] == *(array + 0) == *(array);

关于c - 在C语言中,带有两个星号(**)的变量声明是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318881/

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