当您将字符串文字(例如“ABC”)分配给 char a[] ex。
char a[] = "ABC";
它有做的效果
char a[4] = {'A','B','C','0'};
当你将它传递给函数参数时,同样的事情是否适用
前任。
int f(char a[]);
对比
int f(char *a);
当你将它传递给函数参数时,同样的事情是否适用
不; 一般来说,在 C 中你不能直接按值传递数组;函数的每个数组参数实际上都被编译器解释为指针参数,即当您编写
int f(char a[]);
编译器看到
int f(char *a);
(即使您指定了数组的维度,这同样适用)
顺便一提,
它有做的效果
char a[3] = {'A','B','C"};
实际上,它的效果是:
char a[4] = {'A','B','C', 0};
不,因为这两个函数声明是相同的。两者都声明了一个带有指向 的指针的函数char
,并且在这两种情况下,参数都被初始化为指向字符串文字的第一个元素的指针。