我正在寫一個返回ints數組大小的函數。邏輯是:sizeof(arr)/sizeof(int);
它工作正常,如果我將它保存到一個變量,但如果我將它返回給函數,我得到1
爲10個字節大小的數組。爲什麼?這裏是我的代碼:相同的表達式,但在函數中使用時返回值不同
int b[10];
int t1= sizeof (b)/sizeof (int);
size_t t2 = lenof(b);
printf("t1 = %d, t2 = %d\n", t1, t2);
size_t lenof (int arr[]) { return sizeof (arr)/sizeof (int); }
上面的C代碼打印:
t1 = 10, t2 = 1
有人可以給我解釋一下?也許我應該使用指針?謝謝。
你應該使用指針。作爲參數,'int att []'實際上是int *,size與sizeof(int)相同。 – bmargulies 2012-03-01 03:02:58