因為昨天Euro問了我有關於把二維Array當成參數的問題,
所以今個兒我就做了個小小的測試,來看看pointer和array在實際應用上的差異:
#include void func1( int **num ) {} void func2( int (*num) [] ) {} void func3( int *num [] ) {} void func4( int *num [2] ) {} void func5( int (*num) [2] ) {} void func6( int num [][2] ) {} //void func7( int num[ ][ ] ) {} // illegal int main() { int numA[2][2]; // numA is a 2x2 Array int *numA0 = numA[0], *numA1 = numA[1]; int *numAA[2] = {numA0, numA1}; // numA typeis int(*)[2] // func1(numA); // expect int ** func2(numA); // func3(numA); // expect int ** // func4(numA); // expect int ** func5(numA); func6(numA); // numAA type is int** func1(numAA); // func2(numAA); // expect int(*)[] func3(numAA); func4(numAA); // func5(numAA); // expect int(*)[2] // func6(numAA); // expect int(*)[2] return 0; }
結論是,Array[x][y]和 **Array的呼叫是有差異的!!! (好像是廢話)
不過我還是習慣直接傳Array第一個element的位址,然後function參數用int *num來接收
哈哈就看怎樣用得順囉~