c
1#include <stdio.h> 2 3void output_str_reverse(char **p, int n) 4{ 5 for (int i = n - 1; i >= 0; i--) 6 printf("%s\n", p[i]); 7} 8 9int main(void) 10{ 11 char *a[3] = { "abc", "def", "ghi" }; 12 printf("%s\n", a[0]); 13 output_str_reverse(a, 3); 14}
ポインタについて理解できない部分があるので上記のコードを例に質問させていただきます。
①
main関数内のポインタの配列において、a[0],a[1],a[2]にはそれぞれ各要素の先頭文字へのポインタ、すなわち"a","d","g"へのポインタが格納され、それによって*a[0],*a[1],a[2]はそれぞれa,d,gを表すことがわかりました。しかしa[0]がaへのポインタを表すならば、上記コードの printf("%s\n", a[0]);でなぜabcが出力されるのかわかりません。(a + 0)をa[0]と表せるポインタの性質が関係しているのかと思っているのですが、結局a[0]は何を表しているのでしょうか?
②
二つ目の質問なのですが、output_str_reverse(a, 3);における引数aは何を表しているのでしょうか?
例えば、int a[3];におけるaはa[0]へのポインタ&a[0]を表しますよね。わかりやすく教えていただければ幸いです。
質問長くなってすみません。初心者なのでわかりやすく教えてもらえると嬉しいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/19 05:12