作爲更大任務的一部分我試圖打印C中數組的長度,即數組中有多少個元素。該數組是雙精度數組,我想打印一個整數,即數組中有多少雙精度。 我有這樣的代碼:c打印陣列長度
int array_length(double array[]) {
double length = 0;
length = sizeof(array)/sizeof(double);
printf("%G", length);
return 0;
}
我這樣稱呼它主要是這樣的:
int main(void) {
double test[] = {1.1,2.2,3.3,4.4,5.5};
array_length(test);
return 0;
}
然而,這將返回錯誤:
error: ‘sizeof’ on array function parameter ‘array’ will return size of ‘double *’ [-Werror=sizeof-array-argument]
研究已經告訴我,
sizeof(array)/sizeof(double);
會給我一個數組的長度,我試圖用「%G」來讓我打印這個代碼返回的double。我相信「double *」意味着長雙倍,所以我嘗試將「%G」更改爲「%LG」,將「double」改爲「long double」的所有用途,但這並不能解決問題。這裏發生了什麼?
使用'%zu'打印'size_t'值 – LPs
謝謝大家的回答,我現在看到了這個問題。如果我找到解決方案,我會繼續嘗試並返回:) – Isaac