記事ディレクトリ
序文
あなたが学校から派遣された寮の建物の建設を監督する監督者であるとします。今日、あなたは寮の建物に行って周りを見回しました。階下のドアに歩いて行くと、赤い枠の作業員があなたの鍵が寮から落ちているのを見つけて、あなたに行くように呼びかけましたが、それは新しいものでした。寮は改修されておらず、寮番号もありません。どうすればいいですか?1階の1号室から1つずつしか調べられないので、このような検索効率は特に低く、寮番号があれば検索がはるかに速くなります。
1.ポインタとは何ですか?
検索を容易にするために、寮の各部屋に番号を付けました。また、検索を容易にするために、メモリ内の各バイトに番号を付けて検索効率を向上させています。コンピュータではいわゆる「番号」と呼ばれ、一般的なアドレスと呼ばれています。セックスの場合、通常、アドレスをポインタと呼びます。
ポインタはアドレスです。
2つ、ポインターとポインター変数
1.ポインタ
ポインタを理解するには、最初に概念、つまりメモリを知る必要があります。メモリはコンピュータ上で特に重要なメモリであり、コンピュータ内のすべてのプログラムはメモリ内で実行されます。そのため、メモリを有効活用するために、メモリを小さなメモリユニットに分割し、各メモリユニットのサイズを1バイトにします。
メモリの各ユニットに効果的にアクセスできるようにするために、メモリユニットには番号が付けられています。これらの番号はメモリユニットのアドレスと呼ばれ、アドレスは視覚的にポインタと呼ばれます。
2.ポインタ変数
変数にはアドレスがあり(&を使用して変数のアドレスを取得できます)、アドレスを格納する方法については、ポインター変数を定義する必要があります。これは、変数の別の変数アドレス(つまり、ポインター)への特殊なストレージポインター変数です。ポインタ変数の値はアドレス(つまりポインタ)です。
3.ポインタ変数のサイズ
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(double*));
system("pause");
return 0;
}
32位:
64ビット: 結論:ポインター変数のサイズは、32ビットプラットフォームでは4バイト、64ビットプラットフォームでは8バイトです。
4.ポインターVSポインター変数
#include<stdio.h>
int main()
{
int a = 20, b = 10; //定义整型变量a,b,并初始化
int *p1, *p2; //定义指向整型数据的指针变量p1,p2,‘*’表示指向
p1 = &a; //把变量a的地址赋给指针变量p1
p2 = &b; //把变量b的地址赋给指针变量p2
printf("&a=%p &b=%p\n", &a, &b);//输出变量a,b的地址
printf("p1=%p p2=%p\n", p1, p2);//输出指针变量p1,p2
system("pause");
return 0;
}
この例を通じて、ポインター変数をよりよく理解できます。ポインター変数の変数名はp1、p2、変数の内容は&a、&bです。
ポインタ:はアドレスです。
ポインター変数:スペースを開くために、変数名と変数の内容があります(ポインター変数に格納されているアドレスはポインターです)。
通常、ポインターをポインター変数と呼びます。
第三に、ポインターの使用
1.ポインタ変数を宣言します
コードは次のように表示されます。
int *p; // 声明一个 int 类型的指针 p
char *p // 声明一个 char 类型的指针 p
int *arr[10] // 声明一个指针数组,该数组有10个元素,其中每个元素都是一个指向 int 类型对象的指针
int (*arr)[10] // 声明一个数组指针,该指针指向一个 int 类型的一维数组
int **p; // 声明一个指针 p ,该指针指向一个 int 类型的指针
2.ポインタの逆参照
ポインターの逆参照は、ポインターが指すターゲットを表します。
コードは次のように表示されます。
#include <stdio.h>
int main()
{
int a = 20;
printf("a=%d\n", a);
printf("&a=%p\n", &a);
int *p = &a;
printf("p=%p\n", p);
printf("*p=%d\n", *p);//解引用
system("pause");
return 0;
}
ポインタの逆参照を使用して、値10を割り当てます。
#include<stdio.h>
int main()
{
int a;
int *p = &a; //定义一个整型指针p,并且p指向了a的地址
*p = 10; //解引用,即给a赋值10;
printf("a=%d\n", a);
system("pause");
return 0;
}