陣列指標作為形參傳遞
阿新 • • 發佈:2019-01-09
當陣列作為函式形參時,陣列的地址可以用做函式呼叫的實參。
可以通過陣列地址的傳遞,在函式內可以對該陣列進行訪問和修改。
eg:
執行結果:#include <stdio.h> #define SIZE 10 /* 形式1 */ void func_1(const char a[SIZE]) { printf("獲取陣列的第一個元素=%c\n", a[0]); printf("char a[SIZE]: %d\n", sizeof(a));/* 輸出形參的位元組長度 */ } void func_2(const char a[10000]) {/* 陣列容量是否符合,不影響形參傳遞 */ printf("獲取陣列的第一個元素=%c\n", a[0]); printf("char a[10000]: %d\n", sizeof(a));/* 輸出形參的位元組長度 */ } /* 形式2 */ void func_3(const char a[]) { printf("獲取陣列的第一個元素=%c\n", a[0]); printf("char a[]: %d\n", sizeof(a));/* 輸出形參的位元組長度 */ } /* 形式3 */ void func_4(const char * a) { printf("獲取陣列的第一個元素=%c\n", a[0]); printf("char * a: %d\n", sizeof(a));/* 輸出形參的位元組長度 */ } /* 測試陣列的形參傳遞: 以上三種形式傳遞一位陣列形參,對於編譯器來說, 最後都處理為char型指標,實質上都是一樣的。 寫成形式1可以提高程式的可讀性。 */ int main(void){ char a_char[SIZE] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; char * p_char = a_char; /* 函式呼叫 */ func_1(a_char); func_2(p_char); func_3(a_char); func_4(p_char); }