2013-01-01 103 views
0

将字符串文字(例如“ABC”)分配给char a [] ex时。将字符串文字传递给C中的函数

char a[] = "ABC"; 

它做

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

,当你把它传递给函数参数

前没有同样的事情适用的效果。

int f(char a[]); 

int f(char *a); 
+0

.............无 –

+0

'“ABC “'是'char [4]'不是'char [3]' – ouah

回答

5

不,当你把它传递给函数参数

没有同样的事情适用;一般来说,在C中,你不能直接按值传递数组;每个数组参数的函数实际上是由编译器解释为指针参数,即当你写

int f(char a[]); 

编译器看到

int f(char *a); 

(即使您指定的尺寸同样适用阵列)


顺便提一下,

它做

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

实际上的效果,它具有这样的效果:

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

没有,因为这两个函数声明是相同的。两者都声明一个函数,该函数的指针为char,并且在这两种情况下,参数都会通过指向字符串文字的第一个元素的指针进行初始化。

+0

你的意思是字符串,而不是字符串文字。 – ouah

相关问题