将指向 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
.
在下面的函数声明中,第一个参数是一个字符串,具体来说,是一个字符数组,第三个参数是一个指向整数的指针。第二个参数是指向字符数组的指针吗?换句话说,指向指针的指针?我在阅读了相关问题的答案后发现了这一点: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
.