と呼ばれるいくつかのポインタがあるとしましょう:
char * pChar;
int * pInt;
どちらも他の場所を指すメモリアドレスを保持するだけであり、型は特定のポインタが指すメモリの場所の大きさを宣言することを知っています。たとえば、char はシステム上の 1 バイトのサイズであり、int は 4 バイトである可能性があります。
pChar++; // I am actually incrementing the address pointed to by pChar by 1 byte;
pInt++; // I am actually incrementing the address pointed to by pInt by 4 bytes;
しかし、私がこれを行うとどうなりますか:
pChar+2; // increment the address pointed to by pChar by 2 bytes?
pInt+2; // increment the address pointed to by pInt by 2 bytes? what happens to the other two bytes?
ありがとう..ここで説明をいただければ幸いです..ポインタ型は単に ++ 操作のためですか?
編集: avp は私の質問に適切に答えましたが、フォローアップの質問があります。
memcpy(pChar,pInt,2);
2バイトコピーしますか?または4バイト?アクセス違反になりますか?
編集: Ryan Fox によると、答えは (void*) に型キャストされているため、2 バイトです。ありがとう!閉まっている!
編集:将来の検索者がこれを見つけることができるように..私が発見した別の情報..
memcpy(pChar+5,pInt+5,2);
pInt+5bytelocations が指すメモリ ブロックの 2 バイトを pChar+5bytelocations にコピーしません。2 バイトが pInt(4*5)bytelocations から pChar+5bytelocations にコピーされます。アクセス違反が発生したのも不思議ではありません。読んではいけないところを読もうとしていた.. :)