在函數(shù)中查找數(shù)組長度在數(shù)組長度以下的程序中ar主要是正確的,但在temp它顯示指向ar在我的電腦上是2(單位:sizeof(int)).#include <stdio.h>void temp(int ar[]) // this could also be declared as `int *ar`{
printf("%d\n", (int) sizeof(ar)/sizeof(int));}int main(void){
int ar[]={1,2,3};
printf("%d\n", (int) sizeof(ar)/sizeof(int));
temp(ar);
return 0;}我想知道如何定義函數(shù),以便在函數(shù)中正確讀取數(shù)組的長度。
3 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
arr
, sizeof(arr)
0
-1
\0
char []
sizeof(arr)/sizeof(int) - 1

臨摹微笑
TA貢獻1982條經(jīng)驗 獲得超2個贊
#include <stdio.h>void temp(int *ar){ printf("%d\n", ar[-1]);}int main(void){ int ar[]= {0, 1, 2, 3}; ar[0] = sizeof(ar) / sizeof(ar[0]) - 1; printf("%d\n", ar[0]); temp(ar + 1); return 0;}

茅侃侃
TA貢獻1842條經(jīng)驗 獲得超21個贊
//Adapted from K&R, p.135 of edition 2.#define arrayLength(array) (sizeof((array))/sizeof((array)[0]))int main(void){ int ar[]={1,2,3}; printf("%d\n", arrayLength(ar)); return 0;}
temp
typedef struct{ int *values; int capacity;} intArray;void temp(intArray array){ printf("%d\n", array.capacity);}int main(void){ int ar[]= {1, 2, 3}; intArray arr; arr.values = ar; arr.capacity = arrayLength(ar); temp(arr); return 0;}
- 3 回答
- 0 關(guān)注
- 540 瀏覽
添加回答
舉報
0/150
提交
取消