C言語学習のまとめ_07

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)と同等です。次に、描画と組み合わせると、この問題を引き起こす可能性があります。

おすすめ

転載: blog.csdn.net/CZHLNN/article/details/109737623