トップページ

本棚


両手で1000まで数えられますか?:2進法の話
数値 - 危険物取り扱い注意
100 × 200 =32?:変数のオーバーフローの話
パリティビット
小数の扱いについて
ぽいんた
ぽいんた2
ぽいんた3
ジ・オリジン
ジ・オリジン:補足
かっこつける話
かっこつける話2
文字列のこと
タイミングの話
拡張性の話
取り込む話
staticな話

コンパイルの話1
コンパイルの話2:止まらぬビルド
コンパイルの話3:マシン語に落ちるということ1:メモリの話
コンパイルの話4:マシン語に落ちるということ2:最適化
コンパイルの話5:マシン語に落ちるということ3:変数とスタック
コンパイルの話6:コンパイラはそもそも何をやってくれるのか??
リンクの話
プリプロセッサの話

OS、というもの

オブジェクト指向1
オブジェクト指向:2
オブジェクト指向:3

オブジェクト指向:番外 C言語のソースファイルの話
オブジェクト指向:番外 C言語での「再利用性」と「カプセル化」データ構造とアルゴリズム


抽象的な話

寝込んで布団の中で考えたこと
こんなの、常識??
お仕事プログラミング
ソフトでハードなプログラム
プログラムするということ
お勉強
プログラムを学ぶということの補足
C言語:「学問」と「実務」
統合開発環境
C言語ってポータブルですか?
C言語ってポータブルですか?:2
あなたは、どう読みますか?
ああ勘違い
試してガッテン
低級品
質問をするということ
ポカ
「何もしない」 != 「無駄」
エディタの話
もっと手を抜こう

いまどきの、アセンブラ

VisualStudio2005
VisualStudio2005:2

戦争の防ぎ方、に対する私の考え
身近な差別
改革
地球に優しいなんて大嘘
統計で嘘をつく方法

言葉について
言葉について:2

神が死んだということ
善悪の彼岸から、力への意思を目覚めさせるということ

本を読むということ
本を読むということ:2

絵を描く話
地図
地球儀

オカルトのお話
がんだむさん
RPGソフトウェア
記紀神話の不思議



メニュー

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

C言語(およびその派生言語)習得において、初心者が最初にぶつかる難関が「ポインタ」だとよく言われる。

・・・ホント?

いえね、ポインタで躓かなかったんですよ。いえ自慢じゃなく。ホントに。

まあアセンブラなんてものが先にあったからかもしれませんが。その意味では一般的ではないのかな?

で、ポインタのお話なわけですが。

ようは、「ポイントする」から「ポインタ」(笑)

怒らないで(笑)。ホントにそれだけなんですってば。

C言語って、イマドキのご親切な、まるでプレステ以降のファイナルファンタジーみたいな言語と違って、とっても尖がってるんですよええ。

自分で確保したり、利用したりするメモリ上の領域は、自己責任で管理してやら無いといけない。C言語で提供されているのは、その領域の「先っぽ(厳密には先っぽだけではないけど)」をあらわすことができる変数。それがポインタ。

例えば、
unsigned char* ucpHoge;
ucpHoge = malloc((size_t)100);
なんてやると、hogeには100バイトの領域の「先っぽ」が入る。

また、
char* cpPiyo = "hello world\n";
ならcpPiyoに"hello world\n"という文字列定数の、「先っぽ」が入る。

・・・なにかに、似てませんか?

そう、配列のお名前。これもやっぱり、「先っぽ」をあらわす。

例えば
unsigned char ucaHuga[100];
ならucaHugaという識別子は100バイトの領域の「先っぽ」をあらわす。

なので、C言語ではポインタと配列を、「ほとんど」同じものとして扱える。異なるのは、sizeof演算子で領域のサイズが取得できるかどうかとか、それくらい(他にもあるけど)。

実際、上の配列に対してucaHuga[10000]なんてアクセスの仕方をしてもコンパイラは文句言わない。あまつさえucaHuga[-1]なんてアクセスの仕方もできる。

つまり、C言語っていう言語は「先っぽ」は教えてあげるけど、ケツは(失礼!)自分で管理しやがれ、という言語なのだ。

実際、C言語に「文字列」は存在しない。あるのは、char型の配列だけ。文字列として扱う場合には、最期にNULL文字('\0')を入れることで、お尻を自分で管理しているのだ。



・・・ちょっと書ききれない(笑)
続きます。




| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー