int配列のサイズを返す関数を書いています。ロジックは:sizeof(arr)/sizeof(int);
変数に保存すると正常に機能しましたが、関数に返すと、サイズが10バイトの配列の場合は1
になります。どうして?ここに私のコードは次のとおりです。同じ式ですが、関数で使用すると異なる戻り値
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