blog/content/post/2008/07/04/2008-07-04-00000959.md

7.5 KiB
Raw Blame History

title author date wordtwit_post_info categories
『C言語ポインタ完全制覇 (標準プログラマーズライブラリ)』 kazu634 2008-07-04
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";}}
C
Programming

Cは、ちょうど、このダンの工具のような言語です。つまり、

  • 現場の人間が、目の前の問題を解決するために作成した言語であり、
  • 非常に便利ではあるけれども、
  • 見た目あちこち不格好で
  • よくわかっていない人がうっかり使うと危険な目にあったりする

言語なのです。

Spirit of C

  1. Trust the programmer.
  2. Dont prevent the programmer from doing what needs to be done.
  3. Keep the language small and simple.
  4. Provide only one way to do an operation.
  5. 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();
}

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)