将字符串文字传递给C中的函数
问题描述:
将字符串文字(例如“ABC”)分配给char a [] ex时。将字符串文字传递给C中的函数
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
,并且在这两种情况下,参数都会通过指向字符串文字的第一个元素的指针进行初始化。
+0
你的意思是字符串,而不是字符串文字。 – ouah
.............无 –
'“ABC “'是'char [4]'不是'char [3]' – ouah