星期二, 2月 28, 2017

[ C ] Array 傳遞方式


Array以第一個元素當作是陣列的位址,
因此我可以直接丟array去給function不用加&拿他位址。

void PrintlnOneD(int Array[])
PrintlnOneD(Array_0);

也可以看出來兩邊印出來的value和address都是一樣的。

@@@[1] [0x7ffc7f3b3070]
@@@[2] [0x7ffc7f3b3074]
@@@[3] [0x7ffc7f3b3078]  
@@@[4] [0x7ffc7f3b307c]                                                        
###[1] [0x7ffc7f3b3070]                                                        
###[2] [0x7ffc7f3b3074]                                                        
###[3] [0x7ffc7f3b3078]                                                      
###[4] [0x7ffc7f3b307c]

如果要傳遞2D的array當參數,有以下幾種方式,

這種方式是錯的,因為系統不知道位址在哪裡。
void PrintlnTwoD(int Array[][]){}

這種方式是最基本的,但大小就會被限制住。
void PrintlnTwoD(int Array[4][4]){}

這種方式就不會限制住了,
void PrintlnTwoD2(int Array[][4]){}

又或者用這樣指標array的方式來用,
void PrintlnTwoD3(int (*Array)[4]){}


SourceCode

Ref.

沒有留言: