将指向 char 数组的指针作为参数传递给函数 - C

Passing a pointer to a char array as an argument to a function - C

在下面的函数声明中,第一个参数是一个字符串,具体来说,是一个字符数组,第三个参数是一个指向整数的指针。第二个参数是指向字符数组的指针吗?换句话说,指向指针的指针?我在阅读了相关问题的答案后发现了这一点:Difference between passing array and array pointer into function in C

void setup(char inputBuffer[], char *args[], int *background) {...}

换句话说,*args[]是否等同于**args?

非常感谢!

*args[] 等同于 **args。在将数组作为函数参数传递时,传递指向数组开头的指针(例如第一个元素)。因此,您不知道传递给函数的数组大小,通常数组大小是在另一个函数的参数中传递的。

在您的特定情况下,char* args[] 是一个字符串文字数组。要更好地理解该机制,请参阅 question 6.4 from C-FAQ。这 link 意味着:

Since arrays decay immediately into pointers, an array is never actually passed to a function.

是的,在将参数传递给函数时,char *args[] 等同于 char **args

在第一个参数 char inputBuffer[] 中,函数实际上接收的不是整个 char 数组,而是一个指针变量,其中包含第一个元素的地址。

在第二个参数char *args[]中,类似地,函数接收的不是指向char的整个指针数组,而是一个保存第一个元素地址的指针变量。在这种情况下,元素本身就是一个指针。因此该函数接收一个指向 char 指针的指针,相当于 char **args.