いつもお世話になっています。C言語初心者でただいま勉強中です。構造体のポインタ配列とポインタ配列について質問させていただきます。
ポインタ配列の解釈は、以下でただしいでしょうか?
ex1)char *p[4];
char *p[4]は、書き込みができないだけで同じようにchar p4として使える。
配列名pは、p[0]のアドレスを指す。(p=&p[0])
よって、
*p=p[0];
*(p+1)=p[1];
*(p+2)=p[2];
*(p+3)=p[3];
ポインタpが、配列pを表す。
構造体のポインタ配列の解釈は、以下でただしいでしょうか?
ex2)typedef struct{
int x;
int y;
}A;/Aという構造体の型を作る。/
A *p[4];
A *p[4]は、書き込みができないだけで同じようにA p4として使える。
配列名pは、p[0]のアドレスを指す。(p=&p[0])
よって、
*p=p[0];
*(p+1)=p[1];
*(p+2)=p[2];
*(p+3)=p[3];
したがって、
*p.x,*p.y
(p+1).x,(p+1).y
(p+2).x,(p+2).y
ポインタpが、構造体配列pを表す。
ex3)A B[4];
A *p;
配列名Bは、B[0]のアドレスを指す。(B=&B[0])
この構造体をポインタpで表したいから、p=&B[0]を
する。*p.x,*p.yで表せる。
ex2で、p=&p[0]をしなかったのは、構造体pをポインタpで表すから(構造体変数とポインタ変数の名前が同じ)
この解釈であっていますか?
自分の解釈があっているか教えて下さい。長文で失礼しました。よろしくお願いします。
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。