「ポチのプログラミング講座」と銘打たれた『Cプログラミングの中身がわかる本』という書籍を読みました。どこで知ったのか忘れてしまいましたが、どなたかのブログで良書として紹介されていた本です。 Cプログラムの中身がわかる本 作者: 日向俊二出版社/メーカー: 翔泳社発売日: 2008/02/20メディア: 単行本(ソフトカバー)購入: 4人 クリック: 42回この商品を含むブログ (14件) を見る タイトルや表紙など、一見「なんだこれ……」という感じなのですが、中身はプログラムにおける様々な要素(四則演算、制御構文、配列・ポインタ・構造体を用いたプログラム、マルチスレッド等)を、簡単なCのコードとそれに対応するアセンブラのコードによって、実際にどのようにプログラムが実行されるのかを逐一解説した本で、僕など、理屈ではわかってるつもりでも実際にはあまり馴染みのない話なので、ためになりました。 た
でまあというわけで split/join とかしたい時は 99% 速度なんて気にしてないという法則から、普通に vector かえす split がとりあえずあったりいいんじゃないかなぁとか思うわけです。 split/join - はじめてのにき(2009-03-17) C++ の場合であれば 100% 同意です。ただ、good old な C 言語の場合はどうするのがいいのかな、と思ったのでした。メモリ確保したりしたら、解放めんどくさいし。で、自分だったら、 size_t split_str(char *s, int split_char, char **list, size_t max_count) { size_t count = 0; if (count < max_count) list[count] = s; count++; for (; *s != '\0'; s++) {
> 静的なバッファ… "変数領域" に確保する配列のことです。例えば、関数の外で定義した配列は "静的" になります。(関数内で定義することもできますが…詳細は割愛します) > ポインターとはconst array … この場合の "3453/5252" は "定数領域" にありますので const になります。ですので char *chk = "3453/5252" とすると chk に代入されるのは const ポインタです。 関数内で char chk[] = "3453/5252" とすると、文字列はスタック上の領域(auto 変数)にコピーされ、chk にはその領域を指すポインタが代入されます。これは const ではありません。 > chkにはユーザーが入れた値を代入したいので… いずれにしても入力された文字列を蓄えておく領域(文字配列・バッファ)は必要でしょうし、予想される文
Emacs + GDB を利用したいならば、何よりも GNU Emacs Manual: Debuggers(英語) を読むことを強くおすすめします。 和訳も存在しますが内容が古く、マウスを利用した操作やグラフィカルな機能についての記述がありませんでした。 マニュアルを読んで理解したあとは実践で覚えていくわけですが、以下にまとめたチートシートを利用すれば時間が節約できるかもしれません。 もしも便利な機能に関して漏れがあれば是非教えてください。 .emacs ;;; GDB 関連 ;;; 有用なバッファを開くモード (setq gdb-many-windows t) ;;; 変数の上にマウスカーソルを置くと値を表示 (add-hook 'gdb-mode-hook '(lambda () (gud-tooltip-mode t))) ;;; I/O バッファを表示 (setq gdb-use
C言語初心者向けのページです。 づまづきやすい、「ポインタと配列」についてまとめてみました。 内容は少ないですが随時ふやしていきたいと思っています。 配列とポインタ(その1) 配列とポインタ(その2) 文字列・ポインタと配列 文字列と2次元配列 文字列の比較 C言語で文字列の配列を表現するにはどうしたら良いでしょう? ここでは、下記ようなの名簿を管理するプログラムを想定して 話を進めていきます。 ・名簿 ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃Asano ┃ ┃Fukushima ┃ ┃Furuichi ┃ ┃Hirao ┃ ┃Nanbo ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ 文字の配列の配列 上記の名簿(と言っても名前しかないですが。)を配列を使って表現すると 以下のようになります。 char Meibo[5][10] = { "Asano", "Fukus
せりか式 - C 言語チュートリアル - sizeof演算子 sizeof演算子について検索してくる人が多いようなので,真面目にsizeof演算子についても書いておくことにします. 簡単に言うと,sizeofに渡された型や変数のメモリサイズを調べるものです. sizeof演算子は2種類の使い方があります. sizeof(型) sizeof 変数や定数,あるいは式など 前者の型を与える方は特に悩む必要は無いと思います. 単に指定した型が利用するメモリサイズを返すものです. 問題は,後者の変数や定数を渡す方です. sizeofに変数を渡した場合,その変数名で確保されているメモリサイズを返します.
排他制御とは、あるメモリやある操作を、同時に複数のプログラムからアクセスあるいは実行させないようにするための処理です。 プロセス間で排他制御をするには、グローバル変数は使えません。グローバル変数はプロセスごとにもつものだからです。 共有メモリの1バイトをフラグとして使ったりすると、フラグを立てた瞬間に2つ以上のプロセスが同時に 走ってしまう危険性があります。ファイルを作成し、ファイルが存在するか否かをフラグに使っても同じような 問題があります。 セマフォとは以上のような問題点を解決するための仕組みです。セマフォはOSが用意するグローバルなフラグのようなもので、 そのフラグを待っているプロセスが複数あったとしても、セマフォから実行の許可が得られるプロセスを1つ に制限させることができます。 サンプルプログラムを考えます。このプログラムは親が500バイト共有メモリを作成します。 そして、for
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く