お世話になっております。
C言語で、sizeof演算子を使って配列の要素数を取得したいのですが、main関数
内ではうまくいくのですが、main関数から配列と一緒に自作関数を呼び出して
呼び出した関数内で、配列の要素数を取得しようとしてもうまくいきません。
下にソースを載せます。
c
1#include <stdio.h> 2 3int max(int numnum[10]); 4 5int main(){ 6 int num[10] = { 23,42,15,32,52,63,32,43,11,34}; 7 8 /* 10が出力されてほしいが1が出力される */ 9 printf("値は %d です\n", max(num)); 10 11 /* これはうまく配列の要素数が取得できてる */ 12 printf("%d\n", sizeof num / sizeof num[0]); 13 14 return 0; 15} 16 17int max(int numnum[10]){ 18 int num_size = (sizeof numnum / sizeof numnum[0]); 19 int i; 20 for(i=0; i<10; i++) printf("配列 %d\n", numnum[i]); 21 22 return num_size; 23}
実行結果は
配列 23
配列 42
配列 15
配列 32
配列 52
配列 63
配列 32
配列 43
配列 11
配列 34
値は 1 です
10
となります。僕の予想では
値は 1 です
の部分が
値は 10 です
になると思ってたのですが、なりません。
自作関数を呼び出すときに、ポインタをつければいいのかと思って適当に
あれこれしてみましたが駄目でした。
どなたか原因が思い当たる方は教えて頂ければと思います。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/20 14:30
2016/09/20 14:35