equal_l2’s blog

※記載されている内容の正確性は保証しませんが、間違いを指摘していただければ直します。

ポインタを学ぶ(1) ポインタの基本

巷のC初心者に立ちはだかる最後にして最大の壁ともいわれる、ポインタと言う概念。
いったいポインタとは何なのか、何に使うのか、学んでいく。

基本

Cにおけるポインタとは

あるオブジェクト*1のメモリアドレスを値として持つ変数。
格納されているアドレスにあるオブジェクトを「指し示す」ことからポインタ(pointer)と呼ばれる。

ポインタを宣言するには、次のようにする。

型名 *ポインタ名

間接演算子*を使うことで、ポインタに格納されているアドレスにあるオブジェクトにアクセスできる。

*ポインタ名 //ポインタが指し示すオブジェクトにアクセス

メモリアドレスとは

あるオブジェクトがメモリ上のどこにあるかを指定するための一意な識別子。
オブジェクトのメモリアドレスを得たい場合は、アドレス演算子&を使う。

&オブジェクト名 //オブジェクトのメモリアドレスを得る

コードの例

#include <stdio.h>

int main(){
 int a = 10;        // int型変数 a を宣言し、初期値 10 で初期化
 int *p;            // int型に対するポインタ (int*型) の変数を宣言
 p = &a;            // p に a のアドレスを代入
 printf("%d\n",*p); // p の示すアドレスにある値を表示
}


このコードでは、(説明目的でなければ)ポインタを使う意味は微塵も無い。
ではポインタはどういう目的で使うのか。
それはまた次回。

2016/2/3 解説を文章中からコード内に移した

*1:変数とか関数のこと