c言語でポインタのポインタを学習していてわからないサンプルプログラムがあり、それについて質問します。
以下、サンプルプログラムです。
C
1#include <stdio.h> 2 3int main(void){ 4 char *s[3] = { "abc" , "pqr" , "xyz" }; 5 char **pps=NULL; 6 int i; 7 for(i = 0;i < 3;i++){ 8 printf("%s\n",s[i]); 9 } 10 pps = s; 11 for(i = 0;i < 3;i++){ 12 printf("%s\n",*pps); 13 pps++; 14 } 15 return 0; 16}
上記のプログラムで4点質問です。
1点目は、配列sは定義していないのに使えているのか。
2点目は、定義していない配列sのアドレスをppsのアドレスを取得できているのか。
3点目は、**ppsと定義したのに、使用するときに*ppsとなっているのか。
4点目は、*s[3]ではなく、s[3]と宣言すると、s[0]=a,s[1]=b,s[2]=cの様に代入されてしまうのはなぜなのか。
4点目は追加させていただきました。1〜3点目に回答をいただき考えていたのですが、4点目がわからなくなりました。
回答お願いします。
回答6件
あなたの回答
tips
プレビュー
