我傳遞一個數組int
與4個元素到一個函數和sizeof(array)/sizeof(array[0])
說我有更少的元素。詮釋int數組通過收縮
這裏的例子發生的事情的:
int
main() {
// declaring literal array
int array[] = {1,2,3,5};
// prints 16/4 (correct output for 4 elements)
printf("%d/%d\n", sizeof(array), sizeof(array[0]));
function(array);
return 0;
}
void
function(int array[]) {
// printing 8/4 instead of 16/4
printf("%d/%d\n", sizeof(array), sizeof(array[0]));
}
與所有的編輯,我想知道(一) (*)*原始*問題發生了什麼,(b)'matrix_transposition_key'聲明在哪裏?原來的問題在'function()'的printf中使用'array []',這不會,甚至不會編譯。 – WhozCraig 2013-02-23 22:00:15
您不能將數組傳遞給函數或從函數返回它們;他們降級到指向他們的第一個元素。 – 2013-02-23 22:02:33
對不起,重寫了一些代碼來泛化和複製/粘貼printf語句。我會編輯修復 – 2013-02-23 22:09:26