質問
参考書に記載の以下のコードに関連していくつか質問があります。
[1]
C言語におけるポインタとは、メモリ上のアドレスを格納するための変数という認識で正しいでしょうか?
[2]
メモリ上のアドレスを代入できる変数はポインタ以外に存在するでしょうか?
[3]
コード20行目「ans = heikin(test);」の"test"は、変数test[0]のメモリ上のアドレスを格納したポインタとして働くと考えてよろしいでしょうか?
(ただし"test"には他の変数のアドレスを代入することはできない)
[4]
28行目「double heikin(int t[])」の"int t[]"は見た通り配列を宣言しているという認識で正しいでしょうか?
また、その場合"t[]"はいったい何を示しているのでしょうか?
20行目から引数としてアドレスが渡される(参照渡し)とすると、"t[]"はポインタ(="t")と考えるのが適切な気がしますが、配列名であらわされるポインタには他のアドレスを代入することはできないと学んだので、いまいち理解に苦しんでいます。
分かりにくい文面で恐縮ですが、回答よろしくお願いします。
該当のソースコード
C言語
1#include <stdio.h> 2 3// heikin関数の宣言 4double heikin(int t[]); 5 6// main関数 7int main(void) 8{ 9 int test[5]; 10 int i; 11 double ans; 12 13 printf("5人のテストの点数を入力してください。\n"); 14 15 for (i = 0; i < 5; i++) 16 { 17 scanf("%d", &test[i]); 18 } 19 20 ans = heikin(test); 21 22 printf("5人の平均点は%f点です。\n", ans); 23 24 return 0; 25} 26 27// heikin関数 28double heikin(int t[]) 29{ 30 int i; 31 double sum = 0.0; 32 33 for (i = 0; i < 5; i++) 34 { 35 sum += t[i]; 36 } 37 38 return sum / 5; 39}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/24 05:57