詳しい情報がたくさん得られるので、
今特に困っていることではないのですが、私の疑問の解決にご助力いただけると幸いです。
#include <stdio.h>
int main(void){
int a = 100;
int *p1,**p2,***p3;
p1 = &a;
p2 = &p1;
p3 = &p2;
printf("a = %d\n", ***p3);
return(0);
}
このプログラムで p3 が **p3 で実現できないのはなぜだと思われますか。**p2 は「ポインタのアドレスを入れるもの」で
***p3 も本質的には「ポインタのアドレスを入れるもの」なので、
**p3で問題ないように思うのですが・・・言いたいこと伝わりますでしょうか。
#include <stdio.h>
int main(void){
int a = 100;
int *p1,**p2,**p3; //***p3 → **p3に変更
p1 = &a;
p2 = &p1;
p3 = &p2;
printf("a = %d\n", ***p3); //表示したいときだけ ***p3 で3つ先の値を意味させる
return(0);
}
このプログラムはコンパイルが通らないのですが、なぜそういう仕様になっているのか疑問じゃありません?
気が向いたらでいいので返信くれるとうれしいです。