C言語入門 第9回 難関、ポインタを理解しよう

第9回のポイント

ポインタ
ポインタとは変数のメモリアドレス(変数のメモリにおける格納位置)のこと。
ポインタ変数の定義
int *p;//ポインタ変数pを定義。pにはメモリアドレスが格納されます。
int a=10,b=0;//int型の変数aとbを宣言
p = &a;//ポインタ変数pにaのメモリアドレスを代入
b = *p;//bに*p(すなわちaの値)を代入

変数のメモリアドレスを表す場合は変数名の左に&を付けます。
ポインタ変数を定義する場合は変数名の左に*を付けます。

ポインタがある理由は、関数に対して参照渡しを行う場合です。参照渡しを行うことで、関数で値を直接操作することができます。ポインタを使わずに引数に値を与える場合は値渡しといい、関数自体が引数の値を操作することはできません。

googleドライブ上にこの講座のプログラムコード、スライドデータを置いています。
https://drive.google.com/folderview?id=0B7jeGhcD18UYZjlDalQwRGpVLWM&usp=sharing

以下はビデオで作成したプログラムコードです。

//Study09.c
#include <stdio.h> 
int main (int argc, const char * argv[]){
    int *p;//ポインタ変数p
    int a=5;
    p = &a;//ポインタ変数にaのメモリアドレスを代入
    printf("aの値は%d\n",a);
    kazuchange(p);//値を20にする関数を呼び出し
    printf("aの値は%d\n",a);
    return 0;
}

void kazuchange(int *p){
    *p=20;
}