c言語オペレータ「++」の別の動作
1389 ワード
通常、++を使用します.
int a = 1;
a++;
printf(“%d”,a);//2;
簡単で何も言うことはありません.
最初の出力の2つの数は4差があるはずです.私のはp 1:-1077032260 p 2:-1077032256です.
2番目の出力は40差があるはずです.私のはap 1:1077032468です. ap2:-1077032428
pとqはポインタであり、その値はメモリ内のデータのアドレスを指す.
それらが指すデータはすべて独自のデータ型を持っていて、このデータ型は1つの型と見なすことができて、intの型は4 Bitの大きいです.
あるデータ型へのポインタを操作する(i++,--i,データを取り,データを格納する)ことは,実際にはこのようなデータ型のモジュールを基本単位としてポインタを操作する.
ポインタを++操作し,実際にはこのようなデータ型を指すポインタを用いて次の同じデータ型のデータのメモリ内アドレスを取得し,アドレスのオフセットはモジュールのサイズに応じて決定する.
ポインタの値(つまり次のデータのメモリアドレス)には、このデータ型(モジュール)のサイズが加算されます.
int a = 1;
a++;
printf(“%d”,a);//2;
簡単で何も言うことはありません.
#include <stdio.h>
int
main()
{
int a = 2 ;
int *p = &a ;
int b[5][10] = {4} ;
int (*q)[10] = b ;
printf("p1:%d,p2:%d,*p=%d",p++,p);
printf("
");
printf("ap1:%d,ap2:%d",q++,q);
}
最初の出力の2つの数は4差があるはずです.私のはp 1:-1077032260 p 2:-1077032256です.
2番目の出力は40差があるはずです.私のはap 1:1077032468です. ap2:-1077032428
pとqはポインタであり、その値はメモリ内のデータのアドレスを指す.
それらが指すデータはすべて独自のデータ型を持っていて、このデータ型は1つの型と見なすことができて、intの型は4 Bitの大きいです.
あるデータ型へのポインタを操作する(i++,--i,データを取り,データを格納する)ことは,実際にはこのようなデータ型のモジュールを基本単位としてポインタを操作する.
ポインタを++操作し,実際にはこのようなデータ型を指すポインタを用いて次の同じデータ型のデータのメモリ内アドレスを取得し,アドレスのオフセットはモジュールのサイズに応じて決定する.
ポインタの値(つまり次のデータのメモリアドレス)には、このデータ型(モジュール)のサイズが加算されます.