C言語ポインタの参照規則
C言語でポインタとは他のデータ型のメモリ上のアドレスを格納する特別なデータ型です。ポインタを使用することで、メモリ上のデータを参照する、アクセスして変更することができます。C言語でのポインタ参照のルールは以下の通りです。
- ポインタ変数の定義はC言語において、メモリ空間の確保の前に、必ず宣言を行う必要がある。
int* ptr; // 声明一个int类型的指针变量
- アドレス演算子 (&): アドレス演算子 (&) を使うと変数のアドレスを取得できる。
int num = 10;
int* ptr = # // 将num的地址赋值给指针变量ptr
- 逆参照演算子によって
int num = 10;
int* ptr = #
*ptr = 20; // 修改指针所指向的地址上的值为20
- 空ポインタ:NULLマクロ定義を使用して表すことができ、有効なアドレスを指していないポインタのこと。
int* ptr = NULL; // ptr是一个空指针
- ポインタ演算:ポインタは足し算(+)、引き算(-)などの簡単な計算演算を行うことができます。例えば、ポインタに整数を足すことでメモリのオフセットを行うことができます。
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指针指向数组的第一个元素
ptr++; // 将指针向后移动一个位置,指向数组的第二个元素
- 関数の引数にポインタを指定すると、関数内でポインタが指すメモリ上の値を変更することができます。
void changeValue(int* ptr) {
*ptr = 10; // 修改指针所指向的地址上的值为10
}
int num = 5;
changeValue(&num); // 将num的地址作为参数传递给函数
- ポインタを関数の戻り値にすること: 関数の戻り値としてポインタを渡すことは、特定のメモリアドレスへのポインタを返すために使用できます。
int* createArray(int size) {
int* arr = (int*)malloc(sizeof(int) * size); // 分配内存空间
// 初始化数组
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
return arr; // 返回指向数组的指针
}
int* ptr = createArray(5); // 调用函数创建一个大小为5的数组,并返回指针
これはC言語でのポインタを示す基本ルールです。ポインタを使用する際は、間違ったポインタ参照がプログラムのクラッシュや想定外の結果につながる可能性があるため、注意が必要です。