C言語ポインタ入門:基本概念と実践サンプルコード解説

C言語関連

C言語のポインタは、変数のメモリアドレスを直接扱う強力な機能で、正しく理解すると効率的なプログラムが書けます。初学者がつまずきやすいのは、ポインタ宣言、間接参照、配列との組み合わせです。

ポインタの基本構造

ポインタは「アドレスを格納する変数」です。例えば、int型のポインタはint型変数のアドレスを保持できます。

int a = 10;
int *p = &a;  // 'p'は'a'のアドレスを持つポインタ
printf("aの値=%d\n", *p);  // 間接参照で値を取得

配列とポインタの関係

配列名は先頭要素のアドレスを指すため、ポインタとして扱うことができます。

int arr[3] = {1,2,3};
int *ptr = arr;  // 配列名は先頭アドレス
for(int i=0;i<3;i++) {
    printf("arr[%d]=%d\n", i, *(ptr+i));  // ポインタ演算でアクセス
}

関数にポインタを渡す

関数に変数のアドレスを渡すことで、値を直接変更できます。

void increment(int *num) {
    (*num)++;
}
int main() {
    int val = 5;
    increment(&val);
    printf("val=%d\n", val);  // 出力は6
}

ポインタ配列と文字列

文字列の配列や複数文字列の管理にもポインタが便利です。

char *names[] = {"Alice", "Bob", "Charlie"};
for(int i=0;i<3;i++) {
    printf("%s\n", names[i]);
}

まとめと実践のポイント

ポインタはメモリ操作の基礎であり、配列、関数呼び出し、文字列管理に必須です。学習のコツはまず簡単な変数へのポインタ、次に配列や関数を組み合わせて実験することです。

この基本を押さえると、複雑なデータ構造や効率的なメモリ操作にも対応できるようになります。

コメント

タイトルとURLをコピーしました