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

留得枯荷聽雨聲lyx
TA貢獻(xiàn)51條經(jīng)驗(yàn) 獲得超16個(gè)贊
數(shù)組名其實(shí)就是一個(gè)指針,傳遞到函數(shù)的時(shí)候,只是傳遞了第一個(gè)元素

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
因?yàn)?strong>聲明在函數(shù)參數(shù)中的數(shù)組其實(shí)是指針,也就是說 a 是 double* 類型。
a[0] 得到的還是double類型,所以 sizeof a / sizeof a[0] 就是 sizeof(double) / sizeof(double)
- 2 回答
- 1 關(guān)注
- 1719 瀏覽
添加回答
舉報(bào)
0/150
提交
取消