#include?<stdio.h>??
//輸出數組的長度?
int?arr_str(double?a[])?{
????int?len=sizeof(a)/sizeof(a[0]);??//1????????為何輸出1呢???為何不是數組的長度?
????return?len;
}
int?main(){
????double?arr[]={1.78,?1.77,?1.82,?1.79,?1.85,?1.75,?1.86,?1.77,?1.81,?1.80};
????printf("arr_str里面的數組長度為%d\n",arr_str(arr));
????int?length?=?sizeof(arr)/sizeof(arr[0]);
????printf("main里面的數組長度為%d\n",length);???//正常輸出,?10
return?0;
}為何用自定義函數來求數組的長度會顯示不正常呢,為1,而在main中就顯示正常。用的編輯器是dev-c++,64位操作系統。輸出結果為:如何解決?
2 回答

onemoo
TA貢獻883條經驗 獲得超454個贊
因為聲明在函數參數中的數組其實是指針,也就是說 a 是 double* 類型。
a[0] 得到的還是double類型,所以 sizeof a / sizeof a[0] 就是 sizeof(double) / sizeof(double)
- 2 回答
- 1 關注
- 1720 瀏覽
添加回答
舉報
0/150
提交
取消