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

时间:2015-01-19 20:20:26

标签: c arrays pointers

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

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

换句话说,* args []相当于** args?

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

在您的特定情况下,char* args[]是一个字符串文字数组。为了更好地理解该机制,请参阅question 6.4 from C-FAQ。此链接表示:

  

由于数组会立即衰减为指针,因此数组永远不会传递给函数。

答案 1 :(得分:1)

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

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

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