一つ目のプログラムでは、main関数のfunc(suji);でsuji[9]配列の最初のポインタをfunc関数に渡して、func関数でポインタを受け取っているのはわかります。
また、func(suji);をfunc(&suji[0]);としてもsuji[9]配列の最初のポインタを渡せることがわかりました。
しかし、2つ目のプログラムがどうして成り立つのかがわかりません。
ポインタを渡しているのにどうしてs[9]といった配列で受け取ることができるのでしょうか。
2次元配列への代入を行うときに後者を利用していますがよく意味がわからないので教えてください。
c
1#include <stdio.h> 2 3void func(int *s) { 4 int i; 5 for(i=0; i<9; i++) { 6 *(s+i) = i+1; 7 } 8} 9 10int main(void) { 11 int suji[9], i; 12 func(suji); 13 for(i=0; i<9; i++) { 14 printf("%d", suji[i]); 15 } 16 return 0; 17}
c
1#include <stdio.h> 2 3void func(int s[9]) { 4 int i; 5 for(i=0; i<9; i++) { 6 s[i] = i+1; 7 } 8} 9 10int main(void) { 11 int suji[9], i; 12 func(suji); 13 for(i=0; i<9; i++) { 14 printf("%d", suji[i]); 15 } 16 return 0; 17}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/18 02:12
2021/01/18 05:20
2021/01/18 05:44