1.ポインタの識別
私のコンピュータはリトルエンディアンのマシンです。メモリアドレス指定の基本単位はバイトです。ポインタが逆参照される場合、スイープされるバイト数は、ポインタがターゲットを指す変数タイプ(intなど)によって決まります。 *:スイープ4バイト(8ビット/バイト)、char *:スキャンバイト、char **:スキャン4バイト(32ビットプラットフォームで)、以下は問題を説明できるトピックです。ポインタ。
#include<stdio.h>
#include<windows.h>
int main()
{
/*
最强指针辨析,不接收反驳
*/
char* c[] = {
"ENTER", "NEW", "POINT", "FIRST" };
char** cp[] = {
c + 3, c + 2, c + 1, c };
char*** cpp = cp;
printf("%s\n", **++cpp);
printf("%s\n", *--*++cpp + 3);
printf("%s\n", *cpp[-2] + 3);
printf("%s\n", cpp[-1][-1] + 1);
system("pause");
return 0;
}
ここには、a ++とa + 1の違いや配列名の意味など、多くの概念が関係しています。
代入演算を含むa ++はa = a + 1と同等であり、a + 1は変数aの内容を変更せず、cpp [-1]は*(cpp-1)と同等です。次に、描画と組み合わせると、この問題を引き起こす可能性があります。