--- title: 『C言語ポインタ完全制覇 (標準プログラマーズライブラリ)』 author: kazu634 date: 2008-07-04 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4113;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - C - Programming ---
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(); }
#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(); }