C: 數組形參
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
知識這個東西,真是知道的越多就不知道的越多,C/C++這塘水得多深啊,哈哈。
看下面3個片段:
<一>
1void fun(char a[100]) {2 fprintf(stderr, "%s\n", a);3}45int main(void) {6 char aa[200] = "abcdef";7 fun(aa);8}<二>
1void fun(char a[]) {2 fprintf(stderr, "%s\n", a);3}45int main(void) {6 char aa[200] = "abcdef";7 fun(aa);8}<三>
1void fun(char* a) {2 fprintf(stderr, "%s\n", a);3}45int main(void) {6 char aa[200] = "abcdef";7 fun(aa);8}以上三個片段的輸出其實是一樣的:
abcdef
- fun(char a[100]):實際上這里數組長度100會被編譯器忽略,唯一可能起的作用是提示調用者這里應該傳入一個長度為100的數組,但這種提示也是毫無約束性的。
- fun(char a[]):這里a[]的作用是可以提示調用者這里處理的是一個數組而并不是char*,但是編譯器還是會將a當作一個char*來處理,也就是說如果你在fun()函數中測試sizeof(a)的話,你得到的是一個指針的長度(在32位機器上一般是4)。
- fun(char *a):這種形式應該是普通青年最常用的方式了吧……^_^,一般還會加一個數組長度參數len 。
