C言語ポインタ【メモ】
1211 ワード
C言語ポインタ【メモ】
ポインタ変数
ポインタ変数:メモリに格納されるアドレス自体も変数です.≪一般変数|General Variables|emdw≫:データ自体の値を格納する変数です.
定義#テイギ#
C言語は比較的自由な形式の言語であるため、いくつかのポインタコードの中で以下の2つの定義を見ることができると信じていますが、実は彼らは等価です.2つ目の定義は、ポインタの意味がより快適に見えるかどうかです.実はポインタ変数pbと見なすことができて、彼のポインタのタイプはint*です.int *pb;
に等しいint* pb;
しかし、次のような快適な定義は、次のような状況で別の誤解を引き起こす可能性があります.次はこのようなケースですint* pa, pb, pc;
に等しいint pb, pc, *pa;
に等しいint *pa;
int pb, pc;
定義は理解できますか.まだ霧の水であれば、次の例に結びつけて理解してみてください.int pa = 10;
int *pb = &pa;
printf("value pa = %d
", pa);
printf("value *pb = %d
", *pb);
printf("value &pa = %d
", &pa);
printf("value pb = %d
", pb);
printf("value &pb = %d
", &pb);
printf("value *&pb = %d
", *&pb);
しゅつりょくvalue pa = 10
value *pb = 10
value &pa = 651283788
value pb = 651283788
value &pb = 651283776
value *&pb = 651283788
*pbとpaは等価であり,pb,&pa,&*pbは等価であることがわかる.
int *pb;
int* pb;
int* pa, pb, pc;
int pb, pc, *pa;
int *pa;
int pb, pc;
int pa = 10;
int *pb = &pa;
printf("value pa = %d
", pa);
printf("value *pb = %d
", *pb);
printf("value &pa = %d
", &pa);
printf("value pb = %d
", pb);
printf("value &pb = %d
", &pb);
printf("value *&pb = %d
", *&pb);
value pa = 10
value *pb = 10
value &pa = 651283788
value pb = 651283788
value &pb = 651283776
value *&pb = 651283788