1. 程式人生 > >陣列指標作為形參傳遞

陣列指標作為形參傳遞

當陣列作為函式形參時,陣列的地址可以用做函式呼叫的實參。

可以通過陣列地址的傳遞,在函式內可以對該陣列進行訪問和修改。

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);
}
執行結果: