0

当您将字符串文字(例如“ABC”)分配给 char a[] ex。

char a[] = "ABC";

它有做的效果

char a[4] = {'A','B','C','0'};

当你将它传递给函数参数时,同样的事情是否适用

前任。

int f(char a[]);

对比

int f(char *a);
4

2 回答 2

5

当你将它传递给函数参数时,同样的事情是否适用

不; 一般来说,在 C 中你不能直接按值传递数组;函数的每个数组参数实际上都被编译器解释为指针参数,即当您编写

int f(char a[]);

编译器看到

int f(char *a);

(即使您指定了数组的维度,这同样适用)


顺便一提,

它有做的效果

char a[3] = {'A','B','C"};

实际上,它的效果是:

char a[4] = {'A','B','C', 0};
于 2013-01-01T23:27:21.003 回答
2

不,因为这两个函数声明是相同的。两者都声明了一个带有指向 的指针的函数char,并且在这两种情况下,参数都被初始化为指向字符串文字的第一个元素的指针。

于 2013-01-01T23:25:36.363 回答