タグ

C言語に関するnikuyoshiのブックマーク (5)

  • C 言語にポインタがある理由は省メモリ化・高速化・開発作業の省力化です - 偏見プログラマの語り!

    前回の記事『プログラム初心者にC言語のポインタを不意ながら教える羽目になったなら、こう教えると良いよ』でポインタの教え方を書きました。ソレに対して「そもそもどうしてポインタっていう仕組みがあるの?」という質問をもらったので、つらつらと書こうと思います。稿は「ポインタがある理由の教え方」ではなく「ポインタがある理由」です。分かっている人には相当に退屈な文章ですのでそういう人は読まずにお帰りください。 で、えーと、結論だけ先に言うと省メモリ化のため、次に速度アップのため、そして生産性アップのためです。 1. メモリは有限である。 マシンに搭載されているメモリには限りがあります。メモリ空間は広大ですが、無限ではないのです。 好き放題にどんどんメモリを使ってデータを格納するわけにはいかないというわけです。しかしプログラムは計算のためにメモリ空間を占有します。仮に↓こんな感じに、わずかな有限メモ

  • C言語について質問です。main(intargc,char*argv[]){とは、どのような意味でしょうか??教え - C言... - Yahoo!知恵袋

    main(int argc,char *argv[]){ のmainの中のargc 及び argv[] は、コマンドライン入力画面からのファイル名の直接入力に対応しています。 一番最初のファイル名は、この後に続くファイル名の処理を記述して有るコンパイル済みの実行可能なファイル名で有り、int argc には、その実行可能なファイルを含めたコマンドラインに入力するファイルの総数が入り、char *argv[] とは、具体的に記述して行くと、プロンプト画面の次に記述する char argv[0] = "一番最初のファイル名”char argv[1] = "処理対象に成るファイル名1" char argv[2] = "処理対象に成るファイル名2"・・・・・などと成って行きます。 ここで、注意すべきは、char *argv[] とは、2次元配列であると言う事実です。 一見した所、一次元の配列の様に

    C言語について質問です。main(intargc,char*argv[]){とは、どのような意味でしょうか??教え - C言... - Yahoo!知恵袋
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • スコープ

    識別子の衝突 C言語を熟知している型であれば、ローカル変数名とグローバル変数名が同じだったとき 関数内で変数にアクセスすればどうなるか、すでにご存知だと思います 同様の現象がクラスのメンバ関数内とメンバ変数で発生します メンバ関数内のローカル変数名と、同クラスのメンバ変数名が同じだった時です 次のプログラムを実行した時のことを考えてください #include <iostream> using namespace std; class Kitty { public: char *str; void print(char *); }; void Kitty::print(char *str) { cout << str; } int main() { Kitty obj; obj.str = "Kitty on your lap"; obj.print("Di_Gi_Gharat"); ret

  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • 1