異なるC言語のポインタを1つ増やす方法は何ですか?
C言語では、ポインタのインクリメント操作は、ポインタが指すデータ型に基づいて計算されます。ポインタが加算されると、それは1つ後ろに移動し、データ型のサイズ分移動します。
int型のデータを指すポインターがある場合、ポインターを1増やす操作を行うと、ポインターは後ろにsizeof(int)バイト移動します。
以下は例です。
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr; // 将指针指向数组的第一个元素
printf("ptr 指向的值:%d\n", *ptr); // 输出 1
ptr = ptr + 1; // 执行指针加1操作
printf("ptr 指向的值:%d\n", *ptr); // 输出 2
return 0;
}
上記の例では、整数配列arrを定義し、ポインタptrを配列の最初の要素に向けます。そして、ptr = ptr + 1を実行し、ポインタを1つ進め、つまり4バイト進めます。最後に、ptrが指す値、つまり配列の2番目の要素である2を出力します。
指標の加算はバイトのオフセットに基づいて計算され、インデックス値ではないことに注意する必要があります。したがって、配列を指しているポインタに1を加えても必ずしもインデックスを1加算したわけではありません。