タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

cに関するkanno_kannoのブックマーク (6)

  • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

    僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、意にせよ不意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
    kanno_kanno
    kanno_kanno 2014/01/20
    "メモリ空間をイメージさせることが、変数とポインタの両方を理解させるための近道です"
  • 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

    kanno_kanno
    kanno_kanno 2014/01/20
    分かりやすい説明。けどブコメ見る限りさすがにこんなコードはまず書かれないっぽい
  • https://qiita.com/harukey2525/items/0604c4f00b579d553956

  • #と##演算子

    文字列化演算子 マクロ関数だけで使用できる、便利な演算子が用意されています そのひとつが文字列化演算子です マクロ関数で受け取った値に対して#記号をつけることで それを文字列、すなわちダブルクォーテーションをつけた状態に置換えます (プリプロセッサディレクティブであることを忘れないでください。あくまでソース上で置き換わるだけです) #define STRING(str) #str このマクロ関数は、仮引数の値をダブルクォーテーションをつけた状態に置き換えます 次のプログラムを実行してください #include <stdio.h> #define PRINT(str) printf(#str "\n") #define STRING(str) #str int main() { PRINT(Kitty on your lap); printf("%sバイトは1キロバイト" , STRING(

    kanno_kanno
    kanno_kanno 2013/05/29
    マクロ
  • Cello • High Level C

    #include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage

  • Cプログラミング診断室/最長不倒関数/Never Ending Function

    リストを見て、何か変だと感じませんでしたか?行番号が途中で飛んでいる ので、きっと編集ミスか、著者がリストの一部(大部分)を忘れてしまったと か感じたのではないでしょうか。 リストの左端の行番号によると、関数 SendTo Device は、何と2458行もあ るのです。これだけ長い関数を掲載すると、文がなくなるどころか、雑誌1 冊分のページを消耗しつくしてしまいます。それで、やむを得ず「中略」とい うことにしました。 私は、かれこれ10年もの間、C言語とつきあっていますが、これだけ長い関 数を見たのは生まれて初めてです。口うるさい仲間に見せたり、ネットで流し たら、"Never Ending Function"とか、「最長不倒関数」とか言われてしまい ました。 これだけ長い関数、相当高性能なエディタと、一度に相当の行数を出せるディ スプレイがないと、スクリーン・エディタで編集などできる

    kanno_kanno
    kanno_kanno 2011/11/17
    最長不倒関数という言葉を知らなかったので調べた。新人がまずやるであろう、バカでかい関数のことか。ひとつ知識増えた。
  • 1