サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
新内閣発足
www.st.rim.or.jp/~phinloda
初出: C MAGAZINE 1996年4月号 Updated: 1996-07-31 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 構造体 構造体は、低級に近い言語と言われるC言語の中では高級な仕様に属する機能と いえます。構造体の概念はC++になるとclassに発展し、さらに複雑なデータ構造 を扱えるようになっています。プログラムを書くのに必須ではありませんが、全 体の見通しをよくするには劇的な効果が得られるので、ぜひマスターして欲しい と思います。 構造体 Q 【構造体】 構造体とは何か。どのような時に使うのか。 A C言語では、特に何も宣言しなくても標準で使うことのできる型がいくつかあり ます。 int 、 char 、 float 、 double 、などです。これらの型は、大きさが処理系に依存する可能性はありますが、お おむねの用途に対応してあら
CG by ほりもとあきら Last Update: 2007-01-15 休眠状態?
初出: C MAGAZINE 1996年1月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 前処理 C言語を強力にしている機能の一つに、前処理があります。 #include を使ってヘッダーファイルを分離したり、 #ifdef でマシン依存のコードを使い分けるようにして一つのプログラムを複数の環境に 対応させるといったテクニックは、多くのプログラムで使われています。今回は、 これらの前処理に関係する、よくある質問を取り上げてみます。 前処理一般 Q 【前処理とは何か】 前処理とは何か。 A プリプロセッシングとも呼びます。昔のC言語処理系は、まずソースコードをプ リプロセッサと呼ばれているプログラムにかけてからコンパイラを通す、という ように段階を経た処理を行うものが主流でした。このプリプロセッサが行う処理 が“前処
初出: C MAGAZINE 1995年8月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] ポインタ 前回は文字列を特集しましたが、文字列と密接に関係するのがポインタです。 初心者にとっては鬼門と呼ばれることもあるポインタですが、C言語を使いこなす には必要不可欠な概念でもあります。 経験的には、プログラムが思った通りに動作しない場合、ポインタの使い方を 間違っている確率は非常に高いようです。ポインタを十分理解することが、トラ ブルを少なくする近道の一つです。 Q 【ポインタ】 ポインタとは何か。 A それを詳しく説明すると他のQ&Aを書く頁がなくなってしまいます。:-) C言語に関する入門書の殆どが、ポインタとは何かというテーマで解説した章を 含んでいるはずなので、それらを読んでください。簡単なイメージとしては、実
初出: C MAGAZINE 1996年7月号 Updated: 1996-07-26 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 今回は4月号に引き続き、「構造体」についてのQ&Aを紹介します。特に、初期 化に関する質問に注目してみます。 構造体 (2) Q 【構造体の初期化】 構造体を初期化する場合は、どのように書けばよいのか。 A 基本は、{}で初期値の組みを囲んでやるということです。リストのようになり ます。 struct axis { int x; int y; }; struct axis lt = {0, 0}; 構造体の中にさらに構造体が含まれるような場合には、{}を使って、対応する 構造と同じように初期値を並べます。 struct area { struct axis lefttop; struct axis rightbottom; }
初出: C MAGAZINE 1995年7月号 Updated: 1996-07-03 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 文字列 C言語では、文字列の扱いに関する質問が比較的多い傾向にあります。これは、 ポインタや配列という初心者にとって壁に相当する概念を理解する必要があるこ とと、実用的プログラムを作ろうとすると、どうしても文字列処理の頻度が高く なることが原因になっていると思われます。 今回は、文字列に関する質問で、よくあるものをまとめてみました。 文字列 Q 【文字列型】 C言語には文字列型というものがないと言われた。どういう意味か。 A C言語では、便宜的に char 型の変数配列を使って文字列を表現するのが伝統的仕様となっています。文字列 は、単に char の配列変数に順番に文字が格納され、'\0'が現れた所で終了とみなす、というル
初出: C MAGAZINE 1996年10月号 Updated: 2002-01-09 [←1つ前] [↑質問一覧] [↑記事一覧] [ホームページ] 今回は、多重配列についてよくある質問からいくつかピックアップしてみました。 多重配列 Q 【二次元の配列を引数に与える】 二次元の配列を定義して関数を呼び出したい。次のコードをコンパイルしたが、 うまくいかない。何がおかしいのか。 void foo(int **array) { ... } void bar(void) { int array[10][10]; foo(array); ... } A 配列はポインタとは根本的に違います。関数fooを次のように修 正すればOKです。 void foo(int array[10][10]) { ... } 実際は、このような呼び出しにおいては、最初の要素の個数を省略することが 許されています。
先週までの格言 [ホームページ] 先週までの格言とその解説 2003-01-09 一見豪華主義 パチモンとか。 見た目がよければok。 意外と合理的かもしれない。 こんなことをウソついてもしょうがないし、 マジな話なのだが、 実際自力で思いついたのですよ。 しかし、念の為 google で見たら 8件ほどヒットした。 同案微妙に多数。 意味は全部同じだと思われる。 2002-11-24 裏庭に 埴輪 鶏 ガイル もちろんガイルがポイント。 で、ガイルって何? という話になったのだが、 Street Fighter 2に出てくる軍人さんらしい。 一時期、 仮名漢字変換の競争が激しかった頃、 きっちり変換できるかどうか確かめるために使われた決まり文句。 「裏庭には二羽鶏がいる」と変換されたら成功。 なぜか私のIMEは「ガイル」を覚えてしまったらしい。 他には「桃も李も桃農地」などが有名。 当時
最終更新: 1998-10-02 2.1 XMODEM XMODEMはネット黎明期に急速に広まった通信プロトコルである。非常に簡単な仕様でバイナリデータの転送が実現できるので、多くのコンピュータ、ソフトウェアに実装されている。XMODEMは確かに多くの欠点も合わせ持っているが、簡単に実装できるというメリットがそれにも勝る魅力となっている。 XMODEMは、データをブロックと呼ばれる単位で送信する。ブロックの構造は図1のようになっている。[SOH]はヘッダー開始を意味するキャラクターで、0x01である。シーケンス番号で、1から始めて255になると次は0にリセットされ、その後また1から順に数えることになる。 シーケンス番号の補数は、シーケンス番号が回線のノイズなどでエラーになった時に検出できるように用意されているもので、シーケンス番号と補数を加えると0xffになるような値の1バイト文字である。
初出: C MAGAZINE 1995年9月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] malloc, free 動的なメモリの獲得は、C言語ではしばしば使われる手法です。ポインタの理解 が十分なら、 malloc の使い方を理解することにより、複雑なデータ構造を柔軟に処理することが可能 になるでしょう。あまり慣れない人は、十分な大きさの固定サイズの配列を用意 してしまいがちですが、 malloc 自体はそれほど難しいテクニックを必要としません。 Q 【malloc】 malloc は何と読むのか。 A 「えむあろっく」と読む人と「まろっく」と読む人を知っていますが、それ以 外の読み方は聞いたことがありません。個人的には、本来の意味がmemoryを allocateする、ということなので、m+allocと考えるの
混沌の廃墟にて -101- アコイン 1990-01-21 (最終更新: 1996-02-06) [↑一覧] [新着] [ホームページ] ウインドウシステムのユーザー・インターフェースを語る時、ポインティング ・デバイスによってアイコンを操作する手法は欠かすことができない。だが、日 本語化されたウインドウシステムを見てみると、デザインがどうも洋風になりが ちである。日本には漢字という独特の文化があるので、アイコンに漢字を上手に 生かすことができないか、というアイデアは、地味ではあるが以前からあった。 漢字は字そのものが意味を表現している。これは、英語に比べると大きなメリ ットである。例えば、次のようなアイコンがあれば、エディタかもしれない、と 想像できるはずだ。このための表示スペースは、最低で 16×16 ドットあれば何 とかなるのだ。 +--+ |編| +--+ さて、これではあまり面白
初出: C MAGAZINE 1995年12月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 不定と未定義 C言語で書いたプログラムのバグの中には、言語仕様上の動作が処理系に依存 するようなコードが原因のものがあります。コンパイラをバージョンアップした のでコンパイルし直してみたら動かなくなった、というのはよくある話です。コ ンパイラ自体のバグだったという悲劇的なケースもないわけではありませんが、 コンパイラのバージョンに依存するようなコードを書いていたため、ということ も案外多いようです。基本的には、結果が不確実なコードは書かない、というの が原則ですが、そのためには、不定、未定義という考え方を身に付けておく必要 があります。 不定、未定義の定義 Q 【不定】 不定とは何か。 A C言語の仕様としては正しい書き方で
混沌の廃墟にて・一覧 最終更新: 1999-06-22[新着][ホームページ] -1-「混沌の廃墟にて」 シリーズ第一回。当時FPROGは閑散としていた。 -2-「ビールス流行」 コンピュータウィルスより市販アプリの方がよほど怖いという話。 -5-「石の上にも3秒」 当時の貧弱なパソコン環境がなんとも…。 -6-「誤植」 プロのフェッショナルとは何だろう。電子入稿は誤植を減らすか? -7-「スランプ」 パソコン通信の発言者は聞き上手でなければならない。 -10-「Sing a Song」 2バイトコードの中に1バイトコードが混ざると困る? 電話でじゃんけんする話。 -13-「Give then take?」 ネットって、give&takeの世界か、それともgive^takeなのか。 -15-「トゥーレの王様を語れない」 なぜドイツ語やフランス語を表記できないのだ。 -16-「try ブライ
混沌の廃墟にて -257- 叩きなさい。そうすれば叩かれます。 1996-10-04 (最終更新: 1996-10-29) [↑一覧] [新着] [ホームページ] 盛り上がっている議論を読んでみると、その中に叩かれ役がいることが多い。 なぜ叩かれるかというと、それなりの理由があるのだが、本人はその理由に気付 いていないようで、極端な場合は、そこの常連が結託していじめていると考えて いそうな雰囲気の時すらある。 そのような時に、第三者が通りかかって余計なことをするととばっちりを食ら う。浦島太郎は亀を助けることができたが、考えてみれば、叩く側には叩く理由 があるはずである。単なる憂さ晴らしで亀を叩くというのなら阻止するのも道理 である。昔、イルカを捕獲するための網を切ったという外国人がいた。イルカが 可哀想だというのだが、そのおかげで漁業に被害を受けている日本人漁師達は可 哀想ではないという
Cマガジンに連載中のコラムです。 一部の表現が、連載された内容と異なる場合があります。 Updated: [ホームページ] 最新登録 機種依存文字(1999-03,第81(78)回) (1999-05-27) 機種依存文字って何? 「~」は機種依存文字?? 一覧リスト CRが先かLFが先か(1992-07,第3回) データの性格を見切って比較の順序を最適化する。 ゼロ要素へ(1992-08,第4回) ループカウンタの秘技。 直接数値を書いても悪くはない場合(1993-01,第9回) TRUE、FALSEの話。 ログファイルの恐怖(1993-03,第11回) ログを取る秘訣と、ファイルの名前を一気に変更するアイデア。 職と芸の割合(1993-08,第16回) プログラムの芸術性。変数をどこで定義すべきか。 同じか違うか(1993-09,第17回) ネットに見られる「思います」文の考察と、ルー
初出: C MAGAZINE 1996年5月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] ビット操作、論理演算 C言語は低レベルの高級言語といわれますが(?)、理由の一つとして、シフトや マスクといったビット操作が比較的簡単に実現していることがあげられます。ア センブラから言語を学んだ場合は、これらの操作はごく簡単なのですが、高級言 語からいきなりプログラミングを始めた人には、ビット操作という概念そのもの に慣れていないため、分かりにくいかもしれません。 ビット操作 Q 【ビット操作】 そもそも、ビットとは何なのか。 A コンピュータの中では、数値は0と1という二つの値で表現されています。たと えば、0と1のいずれかを入れることができる箱があると考えてみてください。こ れだけでは1と0の2通りの値しか表現できません
初出: C MAGAZINE 1996年8月号 Updated: 1996-09-21 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 今回は、よく知られているけどちょっと分かりにくいアルゴリズム、あるいは、 今までの連載で出てきたトリッキーなコードについて、どのような原理で動作す るのかを紹介してみようと思います。ただし、一般論として、凝ったコードより も分かりやすいコードの方が価値がある場合が多いということも頭に入れておい てください。 凝ったアルゴリズム Q 【曜日の求め方】 Comp.lang.c FAQ listを見ると、曜日を求める関数として次のものが紹介され ていた。 dayofweek(y, m, d) /* 0 = Sunday */ int y, m, d; /* 1 <= m <= 12, y > 1752 or so */ { stat
初出: C MAGAZINE 1996年6月号 Updated: 1996-07-01 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 標準ライブラリ C言語は関数という単位で処理を行うことにより、プログラマーがプログラムに 自由に新しい機能を追加することが簡単になっています。しかし、作った関数が 実は標準ライブラリにある関数だった、というのも無駄な話です。今回は標準ラ イブラリに関する大雑把な内容に関するQ&Aです。各関数の仕様の詳細はコン パイラに付属しているリファレンスマニュアルなどを参考にしてください。 ライブラリ Q 【標準ライブラリ】 標準ライブラリとは何か。 A 標準的なC言語、一般的にはANSI Cで定められているライブラリ関数のことです。 あるいは、これらの関数が格納されたライブラリを意味することもあります。 他の言語では、入出力のような処理
[↑記事一覧] [ホームページ] 質問詳細リスト コンパイラの選び方(C MAGAZINE 1995-6) C言語を一から勉強するにはどのような環境を揃えればよいか? どのパソコンを買えばよいか? VC++とBorland C++は、どちらがよいか? gccとは何か? C言語の入門書は何がよいか? K&Rとは何か? 「その質問はシステムに依存する」とはどういう意味か? 処理系に依存した質問の例は? 動作が不定である、というのはどういう意味か? プログラムを別のマシンでコンパイルしたら動作しないのはなぜか? エンディアンが等しい別のマシンにプログラムを移植したのに動作がおかしい。 test.cというプログラムをコンパイルしてtestというコマンドを実行しようと したが、動作がおかしい。 リンク時にstrrevがないというエラーが出る。 文字列(C MAGAZINE 1995-7) C言語には
(今週(?)の格言) 一見豪華主義 C言語 初級C言語Q&A (2003-06-06) C MAGAZINEに連載した Q&A のWWW版。 フィンローダのあっぱれご意見番 (1999-05-27) C MAGAZINEに連載していた無節操コラム。抜粋。 第81(78)回「機種依存文字」 「Cプログラミングの秘訣」 (1998-09-17) C MAGAZINE 1992年4月号に掲載された特集記事です。 プログラマーズフォーラム No.274「読ませる文章 (1)」 , No.275「読ませる文章 (2)」 , No.276「読ませる文章 (3)」 追加 その他 CG(2007-01-15) etc.(2003-01-09) 本当の裏ページ(絶賛放置中) 裏の裏ページ Phinloda のもう裏だか表だか… 裏ご意見番 Phinloda のいつか聴いた曲 Phinlodaのいつか読んだ本
[↑質問一覧] [ホームページ] 号別リスト コンパイラの選び方 (C MAGAZINE 1995-6) 文字列 (C MAGAZINE 1995-7) ポインタ (C MAGAZINE 1995-8) malloc, free (C MAGAZINE 1995-9) 値 (C MAGAZINE 1995-10) スタイル (C MAGAZINE 1995-11) 不定と未定義 (C MAGAZINE 1995-12) 前処理 (C MAGAZINE 1996-1) 処理系依存の問題 (C MAGAZINE 1996-2) 動かないプログラム (C MAGAZINE 1996-3) 構造体 (C MAGAZINE 1996-4) ビット操作、論理演算(C MAGAZINE 1996-5) 標準ライブラリ (C MAGAZINE 1996-6) 構造体(2) (C MAGAZINE 1996
特集 Cプログラミングの秘訣 最終更新: 2006-03-28 このテキストはC MAGAZINE 1992年4月号に掲載された原稿のオリジナルテキストを元にしてHTMLに変換したものです。掲載文章と細部が異なっていると思われます。また、気付いた個所をいくつか修正してあります。 当時はまだWindows 95もないような時代で、現在の状況から見ると違和感のある内容も結構あるかもしれませんが、時代背景を想像しながら補正しつつ読んでいただければ幸いです。 ※2006年3月28日追記: 何が原因か知りませんがこのページのアクセスが増えているそうなので、 HTML のおかしなところを修正しました。 文章の変更はありません。 なお、このサイト(表ページ)は現在休眠状態ですが、 裏ページ や 裏の裏ページ の方を、細々と更新していたりします。 目次 Part1 よいプログラムを書く条件 Part2 明
このページを最初にブックマークしてみませんか?
『Where is Phinloda?』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く