【C言語】ポインタの型とは?

この記事では、C言語におけるポインタの型について解説します。

ポインタの型の意味や役割、さらにはint型char型float型、構造体、関数へのポインタなど、さまざまな型へのポインタの使い方について学ぶことができます。

また、ポインタの型の注意点や応用例についても解説します。

目次から探す

ポインタの型

ポインタは、メモリ上のアドレスを格納するための変数です。

ポインタの型は、そのポインタが指し示すデータの型を表します。

ポインタの型は、ポインタ変数の宣言時に指定されます。

ポインタの型の意味と役割

ポインタの型は、ポインタが指し示すデータの型を示すために使用されます。

ポインタは、メモリ上のアドレスを格納するための変数であり、そのアドレスを使用してデータにアクセスすることができます。

ポインタの型は、ポインタが指し示すデータの型に合わせて指定する必要があります。

ポインタの型を正しく指定することで、適切なメモリ領域にアクセスし、データを正しく扱うことができます。

ポインタの型の種類

int型へのポインタ

int型へのポインタは、int型のデータを指し示すためのポインタです。

int型へのポインタを宣言するには、ポインタ変数の型として int * を使用します。

以下に、int型へのポインタの宣言と使用例を示します。

#include <stdio.h>
int main() {
    int num = 10;
    int *ptr;  // int型へのポインタの宣言
    ptr = &num;  // ポインタに変数のアドレスを代入
    printf("numの値: %d\n", num);
    printf("numのアドレス: %p\n", &num);
    printf("ポインタが指し示す値: %d\n", *ptr);
    printf("ポインタの値: %p\n", ptr);
    return 0;
}
numの値: 10
numのアドレス: 0x7ffd3e8e9a2c
ポインタが指し示す値: 10
ポインタの値: 0x7ffd3e8e9a2c

char型へのポインタ

char型へのポインタは、char型のデータを指し示すためのポインタです。

char型へのポインタを宣言するには、ポインタ変数の型として char * を使用します。

以下に、char型へのポインタの宣言と使用例を示します。

#include <stdio.h>
int main() {
    char ch = 'A';
    char *ptr;  // char型へのポインタの宣言
    ptr = &ch;  // ポインタに変数のアドレスを代入
    printf("chの値: %c\n", ch);
    printf("chのアドレス: %p\n", &ch);
    printf("ポインタが指し示す値: %c\n", *ptr);
    printf("ポインタの値: %p\n", ptr);
    return 0;
}
chの値: A
chのアドレス: 0x7ffd3e8e9a2c
ポインタが指し示す値: A
ポインタの値: 0x7ffd3e8e9a2c

float型へのポインタ

float型へのポインタは、float型のデータを指し示すためのポインタです。

float型へのポインタを宣言するには、ポインタ変数の型として float * を使用します。

以下に、float型へのポインタの宣言と使用例を示します。

#include <stdio.h>
int main() {
    float num = 3.14;
    float *ptr;  // float型へのポインタの宣言
    ptr = &num;  // ポインタに変数のアドレスを代入
    printf("numの値: %f\n", num);
    printf("numのアドレス: %p\n", &num);
    printf("ポインタが指し示す値: %f\n", *ptr);
    printf("ポインタの値: %p\n", ptr);
    return 0;
}
numの値: 3.140000
numのアドレス: 0x7ffd3e8e9a2c
ポインタが指し示す値: 3.140000
ポインタの値: 0x7ffd3e8e9a2c

構造体へのポインタ

構造体へのポインタは、構造体型のデータを指し示すためのポインタです。

構造体へのポインタを宣言するには、ポインタ変数の型として構造体の型名 *を使用します。

以下に、構造体へのポインタの宣言と使用例を示します。

#include <stdio.h>
struct Person {
    char name[20];
    int age;
};
int main() {
    struct Person person = {"John", 25};
    struct Person *ptr;  // 構造体へのポインタの宣言
    ptr = &person;  // ポインタに変数のアドレスを代入
    printf("personの名前: %s\n", person.name);
    printf("personの年齢: %d\n", person.age);
    printf("ポインタが指し示す名前: %s\n", ptr->name);
    printf("ポインタが指し示す年齢: %d\n", ptr->age);
    return 0;
}
personの名前: John
personの年齢: 25
ポインタが指し示す名前: John
ポインタが指し示す年齢: 25

関数へのポインタ

関数へのポインタは、関数のアドレスを指し示すためのポインタです。

関数へのポインタを宣言するには、ポインタ変数の型として「戻り値の型 (*ポインタ変数名)(引数の型)」を使用します。

以下に、関数へのポインタの宣言と使用例を示します。

#include <stdio.h>
int add(int a, int b) {
    return a + b;
}
int main() {
    int (*ptr)(int, int);  // 関数へのポインタの宣言
    ptr = add;  // ポインタに関数のアドレスを代入
    printf("2 + 3 = %d\n", add(2, 3));
    printf("2 + 3 = %d\n", (*ptr)(2, 3));
    return 0;
}
2 + 3 = 5
2 + 3 = 5

以上が、ポインタの型についての解説です。

ポインタの型を正しく指定することで、適切なメモリ領域にアクセスし、データを正しく扱うことができます。

ポインタの型について理解し、適切に使用することが重要です。

1 2 3
目次から探す