C/C++のポインタの機能--参照渡し(builder by ZDNet Japan)より:
今現在、第三者のレビュアーによるレビューを実施し、1ページ目だけ修正されています。それでもなぁ。。。
この「連載」の目次は、次のようになっています。
- 第1回:連載開始の宣言
- 第2回:C/C++が使われ続ける理由
- 第3回、第5~7回:C/C++の開発環境
- 第4回:C/C++を始めるための心構え
- 第8回:5~7で作成した "Hello, World!" の説明
- 第9回:データ型
- 第10, 11回:scanf や printf の書式設定
- 第12回:変数と配列
- 第13回:配列と要素
- 第14回:ポインタ(「参照渡し」改め「変数の場所」)
- 第15回:ポインタと配列
一方、C言語におけるバイブル的存在、「K&R」と呼ばれる『プログラミング言語C』では、このように章が構成されています。
- 第1章 やさしい入門
- 第2章 データ型・演算子・式
- 第3章 制御の流れ
- 第4章 関数とプログラム構造
- 第5章 ポインタと配列
- 第6章 構造体
- 第7章 入出力
これを比べると、K&R では、「ポインタ」が出てくる以前に、ポインタを使わなくてもある程度のプログラムが書けるところまでは説明してあることがわかるのではないでしょうか。
さて、訂正後の「C/C++のポインタの機能」から引用してみましょう。
C/C++のポインタの機能--変数の場所(アドレス)(builder by ZDNet Japan)より:
これらはポインタを表し、主に文字列の操作やファイルをはじめとするデータの入出力を行う関数において、ポインタの機能を利用することを表している。とくにC言語では呼び出し元の変数を変更する「参照呼出し」という機能がないため、C言語に由来する関数ではポインタを使用することが多い。
著者がこだわっているのか。それとも編集部がこだわっているのか。どうにもこうにも、ここで「参照渡し/参照呼び出し」という語を使いたくて仕方ないらしい。
K&R では、「関数とプログラム構造」の後に、「ポインタと配列」が出てきます。これは、関数を説明していなければ、参照渡し(アドレス渡し)という語を使っても、何のことだかわからないからです。
K&R では、書式指定子の説明は第7章、最後の最後です(第8章は UNIX のシステム インターフェイスのため)。値渡しとアドレス渡しの違い、それぞれをどのように使い分けるかについての説明をしてから、それを使った関数の説明がされているわけです。しかし、「C/C++のイロハ」では、第15回まで進んでも、関数はおろか、C言語の構文にすらふれられていません。printf や scanf の説明が、第10,11回でされています。関数とはなんぞや?を説明する前に、関数を使い、書式について説明がされています。関数の説明もせず、なぜ「参照渡し」という語が出てくるのか。いったい、どんな人をターゲットとして書いているか、激しく謎。。。そう、C言語の解説としてグタグタなだけでなく、「解説の仕方」さえグタグタになっています。
私も、人のことはいえないのですけどね。社内向けにC言語の勉強会をしようと資料を作成中なのですが、今のところ、こんな感じで、半年ほどほったらかしorz プログラミングのイロハができていない相手に行う、というのはよいとして、どれくらいの時間をかけて、どれくらいのことをやるのかが決められていないので、見切り発車したはいいが、立ち往生中。
C言語の目的
OSを作ること
マシン語に近いことができる
ライブラリを充実
C言語の特徴
横着者が作った言語
++演算子など
スペルの妙な短縮
MemoryALLOCate, STRingCoPY
ヘッダー ファイルとコード ファイル
宣言と実装を分離
main 関数から始まる
main が隠される場合もある
C言語の型 - 型の種類
数値型
int(列挙体)/short int/long int/unsigned int
float
double/long double
文字型
char/unsigned char
派生型
配列
ポインタ
構造体/共用体
void
C言語の型 - 型の大きさ
char - 8ビット
int - 最低16ビットで、long 以下
short - int 以下
long - short より大きく、最低32ビット
C言語の型 - 型の大きさ
処理系に強く依存
型の大きさに依存したコードは避ける(可搬性/相互運用を犠牲にする)
C言語の演算子
演算子の種類と優先順位
C言語の構文
制御構文
繰り返し構文
分岐構文
投稿日時 : 2008年4月1日 22:16