2013-01-01 138 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

相關問題