7.6 KiB
7.6 KiB
title | author | date | url | wordtwit_post_info | categories | |||
---|---|---|---|---|---|---|---|---|
『C言語ポインタ完全制覇 (標準プログラマーズライブラリ)』 | kazu634 | 2008-07-04 | /2008/07/04/_1031/ |
|
|
Cは、ちょうど、このダンの工具のような言語です。つまり、
- 現場の人間が、目の前の問題を解決するために作成した言語であり、
- 非常に便利ではあるけれども、
- 見た目あちこち不格好で
- よくわかっていない人がうっかり使うと危険な目にあったりする
言語なのです。
Spirit of C
- Trust the programmer.
- Don’t prevent the programmer from doing what needs to be done.
- Keep the language small and simple.
- Provide only one way to do an operation.
- Make it fast, even if it is not guranteed to be portable.
ポインタの練習だよ
#include <stdio.h> int main(void) { int hoge = 5; int piyo = 10; int *hoge_p; /* show the addresses of each variables */ printf("&hoge...%p\n", &hoge); printf("&piyo...%p\n", &piyo); printf("&hoge_p...%p\n", &hoge_p); hoge_p = printf("*hoge_p...%d\n", *hoge_p); *hoge_p = 10; printf("hoge...%d\n", hoge); return(); }
なんでも指せるポインタ型 void*
#include <stdio.h> int main(void) { int hoge = 5; void *hoge_p; hoge_p = printf("%d\n", *(int*)hoge_p); return(); }
型キャストするのがポイントらしい。
ポインタで配列の走査
#include <stdio.h> int main(void) { int array[5]; int *p; int i; for (i = ; i < 5; i++) { array[i] = i; } for (p = array; p != &array[5]; ++p) { printf("%d\n", *p); } return(); }
こんなポインタの使い方がありな訳ですね。そしてこれもあり。
#include <stdio.h> int main(void) { int array[5]; int *p; int i; for (i = ; i < 5; i++) { array[i] = i; } p = array; for (i = ; i < 5; i++) { printf("%d\n", *(p + i)); } return(); }