ポインタを学ぶ
ポインタは変数に & を付ける。
http://codepad.org/nS9c496d
#include<stdio.h> int main(void){ int n; n=1; printf("%d : %p\n", n, &n); return 0; }
1 : 0xbfad0d9c
ポインタ変数は型に*を付けて宣言する。 int* n とかでポインタ変数 n を宣言する。 *n でそのポインタの示す値が取れる。
ポインタ変数 n を宣言して、変数 m のポインタを n に入れる。
http://codepad.org/V10QTNG9
#include<stdio.h> int main(void){ int* n; int m=1; n = &m; printf("%d : %p\n", *n, n); printf("%d : %p\n", m, &m); return 0; }
1 : 0xbfa08cc8 1 : 0xbfa08cc8
こんなふうにやっちゃだめ。
ポインタに1を代入しようとして、怒られる。
http://codepad.org/9KWY8D8R
#include<stdio.h> int main(void){ int* n; n = 1; printf("%d : %p\n", *n, n); return 0; }
Segmentation fault
こんなのもだめ。
初期化されていないポインタの示す値に1を代入しようとして、怒られる。
NullPointerExceptionみたいな感じかな。
http://codepad.org/QdNcxA5X
#include<stdio.h> int main(void){ int* n; *n = 1; printf("%d : %p\n", *n, n); return 0; }
Segmentation fault