將字符串文字(例如「ABC」)分配給char a [] ex時。將字符串文字傳遞給C中的函數
char a[] = "ABC";
它做
char a[4] = {'A','B','C','0'};
,當你把它傳遞給函數參數
前沒有同樣的事情適用的效果。
int f(char a[]);
與
int f(char *a);
將字符串文字(例如「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
,並且在這兩種情況下,參數都會通過指向字符串文字的第一個元素的指針進行初始化。
你的意思是字符串,而不是字符串文字。 – ouah
.............無 –
'「ABC 「'是'char [4]'不是'char [3]' – ouah