2014-10-18 56 views
7

G'day!將一個數組作爲函數參數從一個函數中傳遞,該函數將其作爲參數在C

如果我有一個函數,它將int數組作爲參數,然後從該函數中發送該數組到另一個函數,它是否仍然能夠編輯數組值並使它們成爲在主要層面而不是在功能層面承諾?

int 
main(int argc, char *argv[]) { 
    int A[50]; 
    functionB(A); 
} 

其中函數B看起來像:

void functionB(int A[]) { 
    functionC(A); 
} 

和函數C是實際變異內A []中的值之一。

主要看到更改的數組或原始的A []?

謝謝!

+2

是,原來的陣列將被修改。 – 2014-10-18 04:21:07

+1

當你嘗試過時發生了什麼? – 2014-10-18 04:40:58

回答

10

數組衰減指針。所以它會修改原始數組。

檢查它

void functionC(int A[]) { 
    A[0] = 1; 
    A[1] = 2; 
} 

void functionB(int A[]) { 
    functionC(A); 
} 

int 
main(int argc, char *argv[]) { 
    int A[2]={5,5}; 

    printf("Before call: %d %d\n",A[0],A[1]); 
    functionB(A); 
    printf("After call : %d %d\n",A[0],A[1]); 
} 
相關問題