C: 數組形參
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
知識這個東西,真是知道的越多就不知道的越多,C/C++這塘水得多深啊,哈哈。
看下面3個片段:
<一>
1
void
fun(
char
a[100]) {
2
fprintf
(stderr,
"%s\n"
, a);
3
}
4
5
int
main(
void
) {
6
char
aa[200] =
"abcdef"
;
7
fun(aa);
8
}
<二>
1
void
fun(
char
a[]) {
2
fprintf
(stderr,
"%s\n"
, a);
3
}
4
5
int
main(
void
) {
6
char
aa[200] =
"abcdef"
;
7
fun(aa);
8
}
<三>
1
void
fun(
char
* a) {
2
fprintf
(stderr,
"%s\n"
, a);
3
}
4
5
int
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 。