- PR -

C言語で初心者本を読んだ次の一手は?

投票結果総投票数:55
ポインタを徹底的に 47 85.45%
コンパイル周辺を理解しろ 3 5.45%
関数群を叩き込め 2 3.64%
初心者本もう一冊? 3 5.45%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-08-11 12:46
ご返答ありがとうございます。
とりあえず、私がC言語で学んだ事で頭に残っている物を列挙します。
勘違もあると思いますが...

・変数が箱、箱は整理棚(メモリ)に配置され、値を利用する時に棚番(アドレス)を示す。
・実は、変数名に紐づいているのは棚番だけ。
・ポインタ変数は、箱の中に棚番が入っている状態。
・だからポインタ変数を変数定義しても、中にいれる棚番が示す箱まで存在する訳では無い。
・動的メモリ(配列等、サイズが可変長)を利用する場合はポインタ必須

・入出力引数とは、ポインタ渡し

・配列を含め型とは、バイト情報を見る為の色眼鏡。
・C言語では型とは単なる色眼鏡だから、どんなバイト情報でも読み取れるが意味が無い事もある。

・定数はコンパイル時にリテラル情報に置換される。書込み不可の変数では無い。
・コンパイルでは結構、ソースに対して置換や追加書き処理を行っている。(静的リンクもそれ)

・共有体なる物が存在する。
・VBのVariant型や型定義をしない言語の変数は、型+サイズ長+共有体の構造体では?

ポインタを学ぶ際の用語:ポインタ、アドレス、配列ポインタ、ダブルポインタ
ポインタの関連:動的メモリ、関数の引数&戻値

こんな感じです。

所感:情報処理試験2種の知識が一番役にたったと思った時、C言語を勉強した時...

【修正】
1.C言語で学んだ事 → C言語で学んだ事かつ妄想を多く含む
2.変数名に紐づいているのは棚番 → 棚番と型


[ メッセージ編集済み 編集者: はにまる 編集日時 2004-08-11 12:53 ]
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-08-11 12:48
実際、C のポインタはわかりにくいと思います。
そんでもって、初心者向けの本には「ポインタってのはアドレスなんだ」
みたいな上っ面をなでただけのことしか書いてないし、ベテランは
「そんなのは知ってて当たり前」みたいな顔をしてるしで、なかなか
理解できる機会が少ないのではないかと思うです。

たとえば、C-faq の第六章に出てるような疑問を抱くひとは多いと
思うのですが、その疑問に答えてくれる人or本にたどりつくのが
けっこう難しいんじゃないかなあ、と思いまして。
なかにはこのへんをしっかり解説してくれている本もあるよう
なのですが...
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2004-08-11 12:59
こんにちは。

C言語ならではというところからは、逸れるかもしれませんが、
下記の本に目を通されることをススメルかも。
(既に読んでいればすみません m(..)m)

プログラミング作法
Brian W.Kernighan・Rob Pike著/福崎俊博訳
[ISBN 4-7561-3649-4]
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2004-08-11 13:20
今日は。

えと…と言う事で非常に簡単なサンプルですが参考までに。(VC6.0)

unsigned int *address1,data1,data2;

data1=data2=0;
data1=1000;
data2=2000;
address1=&data1; //data1のアドレスをaddress1に代入
data2=*address1;

とやると…address1にはdata1のアドレスが入っているので、
*address1と指定するとadress1の指し示すデータが入ります(つまりdata1の値)

結果data2の値が1000になります

http://black.sakura.ne.jp/~third/programming/c/c.html

等も参考に。


[ メッセージ編集済み 編集者: NAO 編集日時 2004-08-11 13:55 ]
こくぼ
大ベテラン
会議室デビュー日: 2003/08/11
投稿数: 229
お住まい・勤務地: 国境の南、太陽の西。
投稿日時: 2004-08-11 13:25
こんにちはー☆

やっぱりポインタを理解することがC言語を理解することに近いんじゃないかと
ぼくは思ってます。

#実は最近、「C言語のポインタをどうやって理解しましたか」なんていう
#スレッドを投稿しようと思ってたんですが、その必要がなくなっちゃったみたいですね^^;

ぼくがポインタに関する書籍で挙げるとすれば
C言語ポインタ完全制覇
まっさきにこの本をお勧めします。

文章自体がとっても平易(いささか乱暴かも)なので難しい感じがしませんし、
それに対して、著者自身がC言語の歴史から、文法、構文に至るまで
しっかりと調べていることが伺えるため、けっこう安心して読んでいけます。

おそらく初めてこの本を読む人は、C言語初心者の方でもベテランの人でも
知らなかったことがあったりするんじゃないかと勝手に想像してたりもします。



_________________
『忍び難きを忍び、耐え難きを耐える。それが忍耐。』

[ メッセージ編集済み 編集者: こくぼ 編集日時 2004-08-11 13:26 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-08-11 13:35
引用:

こくぼさんの書き込み (2004-08-11 13:25) より:

ぼくがポインタに関する書籍で挙げるとすれば
C言語ポインタ完全制覇
まっさきにこの本をお勧めします。



NAL-6295です。

あわせてこのページってところでしょうか。
http://kmaebashi.com/

C言語のトピックス以外にも有益な情報がたくさんありました。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-08-11 13:39 ]
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-08-11 19:15
皆様、情報提供やご意見ありがとうございます。

私に取ってC言語と云えばポインタなのでイの一番に選択肢へ列挙しましたが
予想以上に投稿があったのでびっくりしました。

初心者本が提示しているポインタ操作は理解したつもりですが。
「初心者本が提示している」って所が...実に怪しい!

--------------------------------------------------------------------
NAOさんの書込み (2004-08-11 10:27)より
--------------------------------------------------------------------
>必ずといって良いほど多くの人が此処でいったん躓きます

新入社員の時、確かに挫折したのですが、今回は何故かすんなり頭に入りました...
危険な感じ...

>その次に構造体&クラスかな? 継承とか派生とかの概念が出てくるので

それは、C++の事ですか?

--------------------------------------------------------------------
CHNさんの書込み (2004-08-11 10:49)より
--------------------------------------------------------------------
>でしたら、基礎をあと10回ぐらいやっちゃってください。

やっぱり?選択肢の「初心者本をもう一回」って結構、本音です。
でも、応用をやって基礎を知る事も多々あると思うので、
どっちが早道か?って横着な道を求めてしまうお年頃...

--------------------------------------------------------------------
七味唐辛子さんの書込み (2004-08-11 10:49)より
--------------------------------------------------------------------
>私はデバッカーで、変数の値とアドレスを見比べて理解しました。

C言語にもIDEがあるんですね。(CGIでもあるのかな?)C++からと思っていました。
でも現実行環境はUNIXで、端末よりTeraTermでリモート実行しています。

>別にポインタ使わなくても プログラムは作れるので?
>あんまりこれにこだわるのはいかがなものかと、

ぐさ、馬鹿の一つ覚えで一生懸命ポインタを使っていました。

--------------------------------------------------------------------
はゆるさんの書込み (2004-08-11 11:37)より
--------------------------------------------------------------------
>ファイル操作って、けっこう高度なワザだと思うのは私だけでしょうか。

お?本当に、これで私も一人前? 

--------------------------------------------------------------------
skulkerさんの書込み (2004-08-11 12:07)より
--------------------------------------------------------------------
>ポインタはアドレスではないですよ。
>多くの処理系では、仮想アドレスを使ってポインタを実装しているというだけで。

うむ...違いが判んない。
 ・アドレス←仮想メモリの番地
 ・ポインタ←DBのデータ操作によく出るカーソル・ポインタのメモリ版
と言うご指摘で理解しておけば宜しいでしょうか?

>Cみたいに処理系依存が多い言語では、こういうところの言語仕様と処理系の実装の区別が
>必要だと思います。

なるほど。勉強のポイントにして置きます。

>Cならでは経験というなら、OSの内部のプリミティブなレベル、
>システムコールに踏む込んではいかが。但し基礎では全くありません。

以前、 『なぜ「GOTO文」を使っては、いけないのですか?』
コブラさんやjittaさんから教えて頂いた、割込制御の関数が心に残っています。

>後、標準ライブラリを多く知る事。
あい。

--------------------------------------------------------------------
ぽんすさんの書込み (2004-08-11 12:48)より
--------------------------------------------------------------------
>実際、C のポインタはわかりにくいと思います。
>そんでもって、初心者向けの本には「ポインタってのはアドレスなんだ」
>みたいな上っ面をなでただけのことしか書いてないし、ベテランは
>「そんなのは知ってて当たり前」みたいな顔をしてるしで、なかなか
>理解できる機会が少ないのではないかと思うです。

やっぱり、上っ面ですか。

>たとえば、C-faq の第六章に出てるような疑問を抱くひとは多いと
>思うのですが、その疑問に答えてくれる人or本にたどりつくのが
>けっこう難しいんじゃないかなあ、と思いまして。

お!返答に挑戦してみます。 ←馬鹿。
(ぐ〜ぐるでヒットした)

--------------------------------------------------------------------
Qooさんの書込み (2004-08-11 12:59)より
--------------------------------------------------------------------
>下記の本に目を通されることをススメルかも。
>(既に読んでいればすみません m(..)m)
>
>プログラミング作法
>Brian W.Kernighan・Rob Pike著/福崎俊博訳
>[ISBN 4-7561-3649-4]

読んでいませんでした。情報提供ありがとうございます。

--------------------------------------------------------------------
NAOさんの書込み (2004-08-11 13:20)より
--------------------------------------------------------------------
>http://black.sakura.ne.jp/~third/programming/c/c.html
>等も参考に。

お!お気に入りに早速追加しておきます。

--------------------------------------------------------------------
こくぼさんの書込み (2004-08-11 13:25)より
--------------------------------------------------------------------
>#実は最近、「C言語のポインタをどうやって理解しましたか」なんていう
>#スレッドを投稿しようと思ってたんですが、その必要がなくなっちゃったみたいですね^^;

ん!それは良い御題ですね!

>C言語ポインタ完全制覇
>まっさきにこの本をお勧めします。
>文章自体がとっても平易(いささか乱暴かも)なので難しい感じがしませんし、
>それに対して、著者自身がC言語の歴史から、文法、構文に至るまで
>しっかりと調べていることが伺えるため、けっこう安心して読んでいけます。

おお、完全制覇ですか。しかも判り易い、歴史が乗っているって私好みです。

--------------------------------------------------------------------
NAL-6295さんの書込み (2004-08-11 13:35)より
--------------------------------------------------------------------
>http://kmaebashi.com/
>C言語のトピックス以外にも有益な情報がたくさんありました。

情報提供ありがとうございます。

====================================================================
他にご意見等あれば、宜しくお願い致します。
# 購入した初心者本を読んで、途中で筆者がダレている感じがしたのは秘密。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-08-12 00:04
引用:

こくぼさんの書き込み (2004-08-11 13:25) より:
ぼくがポインタに関する書籍で挙げるとすれば
C言語ポインタ完全制覇
まっさきにこの本をお勧めします。


あああーっと、私が「なかにはこのへんをしっかり解説してくれている
本もあるよう なのですが...」として意識していたのはまさにその本です。
せっかくですので、C-faq のアドレスも。
# はにまるさんはすでに到達されているようですが。
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/
本のほうはこちら。
http://www.amazon.co.jp/exec/obidos/ASIN/4775302507/249-5575587-3941941

スキルアップ/キャリアアップ(JOB@IT)