--- 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は、ちょうど、このダンの工具のような言語です。つまり、

言語なのです。

Spirit of C

  1. Trust the programmer.
  2. Don’t 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言語ポインタ完全制覇 (標準プログラマーズライブラリ)