タグ

cに関するnaoto_akazawa_1のブックマーク (35)

  • C言語のポインタはメモリを想像できれば理解できる | 100% Pure NEET

    最近、C言語のポインタは難しいって話をプライベートでして、そのときにした説明をまとめてみた。 コンピュータのメモリがどのようになっているか想像する これはHex Fiendというソフトを使ってあるファイルのHexダンプを見たものだけど、コンピュータのメモリも同じような構造になっているのでこれを使う。類似のソフトはHex Editorなどで検索すれば出てくるだろう。 コンピュータのメモリはこうしたずらずらと数値が記録されたマス目の連続のような構造をしている。Hex Editorなのでこれは16進数で表現されている。1バイトは16進数2桁で表現される。Hex Editorでは普通は1バイトごと、あるいは4バイトごとに区切って表示する。このエディタは一区画ごとに8桁の16進数があるので4バイトごと。 ポインタを使うのに重要なのはたぶん、こうしたメモリの内容を頭の中で思い浮かべることができることだ

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (1) google-perftoolsとは | エンタープライズ | マイコミジャーナル

    google-perftoolsはGoogleによって提供されている、C/C++アプリケーションのパフォーマンスを改善するための開発ツールキットである。2005年3月に初めて公開され、およそ4年を経て7日に正式版がリリースされた。The BSD Licenseの下で提供されており、LinuxをはじめとしてFreeBSD、Mac OS X、Solaris 10、Windows XPなど、各種プラットフォームでの動作が確認されている(ただし、Linux以外については一部機能を除く)。 google-perftoolsには次に挙げる4つのツールが含まれている。 高速メモリアロケータTCMalloc ヒープチェッカー ヒーププロファイラ CPUプロファイラ TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、テスト

  • データの扱い

    ということができます。 たとえば、a = 10; a = 20; では、 a は「変数」、10 や 20 は「定数」になります。 ※ 「a = 10;」 は、a に 10 を代入するという意味になります。 詳しくは「3-1. 代入演算子(=)」を参照してください。 2-1.定数 定数は具体的に下記のように分類できます。 数値定数整数定数 8進数

  • [迷信] double の出力書式は "%lf" | 株式会社きじねこ

    この迷信、ないしは事実誤認はあまりにも根が深く、あまりにも多くのプログラマが間違いを犯し続けるため、遂には標準規格の方が折れて、迷信を追認することになったという"暗い歴史"があります。 printf 系の関数で double 型の実引数に対応した書式指定は "%lf" ではなく "%f" が正解です。同様に、"%le" や "%lg" ではなく、"%e" や "%g" を使うのが正解です。 この迷信の元になっているのは、ほぼ間違いなく scanf 系関数の書式との混同です。そして、悪いことには、迷信を信じて疑わない人々が、さらにその迷信を部下や後輩や学生に広めているのです。 C/C++の仕様が分かるのであれば、少し考えれば printf 系関数の書式指定が float と double で区別する必要がないことは容易に理解できるはずです。すなわち、可変個実引数は、既定の実引数拡張によって

  • C言語で100行以内でパケットモニタを書く - 一汁三菜

    netfilterは、Linuxのパケットフィルタです。これを使うとネットワークを使って色々と遊ぶ事ができます。 libnetfilterの強力さをアピールする為に、パケットモニタを書いてみました。読みやすさの為にエラー処理を徹底的に省いていますが、特に読みづらくしたりする事なく、57行で書けています。 論より証拠。以下がソースコードです。 #include <stdio.h> #include <netinet/in.h> #include <linux/netfilter.h> #include <libnetfilter_queue/libnetfilter_queue.h> #define QUEUE_ID 2 static void print(const char *buf, int len) { int i; for(i = 0; i < len; ++i) { printf

    C言語で100行以内でパケットモニタを書く - 一汁三菜
  • よりそいプログラミングのすすめ

    ちょっと前の話なんですけれど,あたしが知ってる生身の人の中で,もっとも優秀なプログラマさんのコーディングを見せてもらうことがありました。知らないライブラリの使い方をたずねたのがきっかけなんですけれど,「ちょっと作ってみるから見てて」ってな話になったのでした。これがすごかった。 「よりそいプログラミング」というのは,ここで作った言葉で,単純に片方が寄り添う形で行うプログラミング方法です。片方がひたすらプログラミングして,それを傍から見るというモノ。ここで,似たような言葉のペアプログラミングは,もちろん製造工程の話だけれど,「よりそいプログラミング」は開発工程とは異なる,教育目的のプログラミングです。だから,生産性云々とかは,とりあえずさておいてください。 さて,そのプログラマさんのプログラミングを見ていたところ,とにかくペースがものすごい。傍から見ていると,言葉を出すのと同じ感覚で,考えたこ

  • 漸くCを切り離したぞ! - 神様なんて信じない僕らのために

    ……ということで、漸くCを切り離しました。 1ヶ月かかった。 ちかれた。 そして今さらの反応。 どんだけゆとりですか(笑) 各ビットのネーミングとかはそりゃああるだろうけど、 その程度のビット演算で悩んでどうするのかと。 あとはまあ、マクロでくるむくらいはしていいとは思うけどさ。 404 Not Found うーん、ビット演算ではなくて、 そのビット演算の結果、どうなっているのかが読み取りづらいんですよねえ、と思った訳なのです。 「で、そのビットはどんな効果を及ぼすの?」という感じで。 いや、過去の自分が読んだら、こいつはゆとりだ! とか思うんでしょうけれども。 hoge_flag |= HOGE_FLAG; ... if (hoge_flag & HOGE_FLAG) { hoge_flag &= ~HOGE_FLAG; } が至るところに出現するんですが、これが立っているとどうなるの?

    漸くCを切り離したぞ! - 神様なんて信じない僕らのために
  • 【ハウツー】ゼロからはじめるC言語 - 構造体編 (1) 異なるデータをひとまとめにする構造体 | パソコン | マイコミジャーナル

    個別のデータを連結する 前回の配列は、同じデータ型の変数を列のように並べて操作するものでした。同じデータ型の値を大量に管理する場合は便利ですが、現実の情報をコンピュータで扱う場合、関連した異なるデータ型を管理しなければなりません。例えば、身長というデータは整数型ですが、身長だけを管理するソフトウェアは存在しないでしょう。通常は、誰の身長なのかを表す名前などと関連付けられます。同時に、体重や血液型など、他の多くの情報を連結して、実用的な個人情報として管理できます。 このような、異なるデータ型が集まって1つの有用な情報となるデータ構造の場合、名前や身長などの変数を個別に作成するのは合理的ではありません。そこで、構造体を用いて異なる型の変数を1つにまとめて管理します。構造体は、複数の変数の集合であり、複雑なデータを1つの変数として表現できます。 実践のプログラミングでは、複数の値を1つの構造体に

  • 画像ファイルの扱い方 (1) - C言語 - 碧色工房

    プログラミングの入門書に書いてある通りに勉強していても、 自分のプログラムの結果がコンソールに出ているだけではなんだか味気なく感じてしまうことはありませんか? ある程度プログラミングのやり方が分かってくると、画像を扱いたくなってくる人も多いでしょう。 それに、結果が画像の形で現れてくれると、プログラミングがなんだか一層楽しくなります。 でも、画像ファイルの扱い方は入門書にはほとんど書かれていませんね、 私も画像ファイルを扱いたいと思ったときどうすればいいのか調べるのに苦労しました。 ここでは、その画像ファイルのC言語での扱い方を解説したいと思います。 ここでやる内容は、画像ファイルのデータを書き出して、それをビューワなどで開いて確認するという形になります。 画像ファイルをC言語のプログラムで表示したりするというのとはちょっと違いますのでご注意を。 (こいつをするにはOSに依存したライブラリ

    画像ファイルの扱い方 (1) - C言語 - 碧色工房
  • C言語入門(2)

    今まで main 関数の中に全てのプログラムを書いてきたが,これでは複雑なプログラムを書くことができない.複雑なプログラムは,プログラムの処理を複数の関数に分割して記述する. 関数は,何らかのまとまった処理を行う単位である.関数を定義すれば,その関数を呼び出すことによって,簡単に処理を行わせることができる.関数を呼び出すことを関数呼び出しと言う. printfやscanfは,予め用意されている関数. 自分で定義した関数は,printfやscanf等の予め用意されている関数と 区別すること無く使うことができる. 関数には,引数を渡すことができる.引数によって,関数にどのようなことをさせるのかを細かく指定する. 例えば,printf関数では,引数によって何を表示するのかを決めている. 関数は,return 文を使って値を返すことができる.返す値を返り値と呼ぶ.返り値は,関数が処理を行った結果を

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • HOMMEZ公式オンラインショップ

    HOMMEZ(オムズ)は男性の心と身体の健康を支援し、一人でも多くの人が子供を得る幸せや男性としての喜びを享受できる社会の実現を目指しています。男性の妊活、活力にまつわる情報や商品の力で性や妊活に悩む男性が効率的に納得感を持って活動できる機会を創出します。

  • http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide64-1.html

  • その他の型

    第16章 その他の型 第15章で構造体について説明しましたので、C言語初心者の方が学習すべき「データ型」についてはこれ以上は必要ないような気もします。 ただ、一部の入門書には「typedef」、「union」、「enum」についても説明がありますので、この章で取り上げたいと思います。 16-1.typedef 「typedef」は既にある型に対して新しい名前を作成するもので、次のように記述します。 たとえば、typedef がよく使われるものにビット列があります。 ビット演算をする場合には演算対象の変数は「unsigned(符号なし)」であることが条件ですが、このunsigned型をビット演算の対象である事を強調して次のように宣言したりします。 typedef unsigned char BYTE; と宣言しておくと、このあとは BYTE data; と宣言できます。これは、 unsign

  • Koders Code Search: ifft.c - C

  • http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide67-1.html

  • C言語の基礎-演算子

    a = ++b; → b = b + 1; a = b;   bに1を加算してから、bをaに代入する。 a = b++; → a = b; b = b + 1;    bをaに代入してから、bに1を加算する。 a = --b; → b = b - 1; a = b; a = b--; → a = b; b = b - 1; (5) ビット演算子

  • C演習読本 第6章 配列

    C演習読 第6章 配列 目 次                  印刷11ページ 2006/2/1 改訂 「配列」は第10章「判断機能」、第11章「繰り返し」とあいまって、コンピュータの能力を最大限に引き出すものである。「判断機能」、「繰り返し」、「配列」はコンピュータの思考を司(つかさど)る三の大きな柱である。 これまでは一つの変数名に一つの値(整数や実数)が対応していた。これでは、たとえば学生全員の成績処理を行う場合は、変数名(したがって対応する演算式も!)を学生の人数分用意しなければならない。しかし、配列の考えを応用すれば、学生数に無関係に処理プログラムを用意することができる。 1. 配列とは 一つの変数名には一つの値が対応している。配列(array)では、一つの配列名は多くの配列要素(array element)のセットを表し、その一つの配列要素に一つの値が対応している。実行文

  • fgets( ),fputs( )

    fgets( )とfputs( ) fgets( )とfputs( )は1行単位の入出力関数です。 「fgets( ファイルからの1行読み込み)」 (書式) (機能) ファイルポインタfpで示されるファイルから、バッファbufに1行読み込みを行います。読み込みは復改(¥n)に出会うか、n-1個の文字を読み込むまで実行されます。いずれかの条件が満たされると、読み込んだ文字列の最後に、ヌル文字を付加します。fgetsが正常に行われればbufへのポインタが返されますが、ファイルエンドまたはエラーならばNULLを返します。 「fputs(ファイルへの1行書き込み)」 (書式)