2014-08-30 C言語再入門、ポインタに感するあれこれ ポインター変数 定義 ポインター変数は通常の変数と違い、変数名の前に*を付けて定義する char *p1; int *p2; unsigned long *p3; 演算 char *p1; long *p2; p1; p2; 2つの変数の演算結果は同じではない。p1は+1されるが、p2変数は+4される(longが32bitのケース) p2が4バイト(32bit)変数であるlongに対するポインターだからである。 ポインターのインクリメントあるいは加算減算は、指定した数だけ値が増減するのではなく、指定した数だけポインターが「進むか戻るかする」のである。 ポインター渡し 値渡しと、ポインター渡しがある ポインター渡しで受ける側の関数は、引数をポインター変数として定義する。 int hoge(int *foo) { return *foo; } 関数を呼ぶ側は、原則として参照演算子(アドレス演算子)であるアンパサンド記号(&)を変数名に冠してアドレスの形にする必要がある。 hoge(&piyo); 参考 ポインター http://www.wdic.org/w/TECH/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E5%A4%89%E6%95%B0