以前 紹介した、複雑な C 言語のおける宣言を少し簡略にすることができる方法のメモ。
以前 紹介した、複雑な C 言語のおける宣言を少し簡略にすることができる方法のメモ。
C の宣言は複雑になってしまうことが多々あります。関数へのポインタやその引数にまた関数へのポインタがあったりすると、もうお手上げです。しかし、このような複雑な C の宣言を簡単に読み解ける right-left rule というものがあるので 5 つの例を通して紹介したいと思います。
C において printf() のような可変引数関数に関しての記事です。printf() や scanf() のような関数は、その引数にいくつでも変数を渡すことができます。もちろん、そのような関数をプログラマー自身も作成できるので、その方法について見ていきます。
前回、前々回 と time.h の関数を見てきました。この記事は、その中でも一番柔軟に使用できる strftime() の使い方です。この strftime とは、string format time のことです。
今回は、time.h の difftime() と gmtime() を使用して、ベンチマークの取り方。
時間に関する C の関数に関して。time.h は、時間に関連した関数が宣言されています。これらは、非常に重要です。ファイルは作成された日時を持っていますし、DB は、変更されたり、作成された際に時間を保持します。OS もユーザーのリクエストがいつ成されたかを確認します。今回は基本的な time.h の関数の使用方法の記事です。
ビットマスクは画像処理やハッシュテーブルを作成するなど、たくさんの応用例があります。
C でのビット操作に関してのまとめ。基本的な AND, OR, XOR, NOT。そして、ビットシフトの方法に関する記事です。
細かいですが、ちょっと個人的にメモしておきたい違い。
最近、C を書いてます。その中で勉強したことのメモ。
C言語における文字列に関連した関数のまとめ。strcmp(), strcat(), strlen(), strcpy() 等の一般的なもの以外をまとめてみました。
Objective-C でもブロックの構文をすぐに忘れてしまうように、C言語の関数へのポインタもすぐに忘れてしまいます。備忘録として残しておきます。
“Expert C Programming” で紹介されていたC言語の落とし穴を3つのカテゴリに分けて紹介したいと思います。C言語とは直接関係はありませんが、アメリカの宇宙計画は、少なくとも2度プログラムのバグにより失敗してしまったそうです。Mercury というプロジェクトでは、プログラムが . を , の代わりに使用したことにより、大きな事故が起きそうになりました。この事件は幸いにも、発射前にエラーが確認されたため大きな損失はありませんでした。原因は、Fortran の欠陥です。また、Mariner 1 では、アルゴリズムの間違った仕様書を渡されたプログラマが、その通りに実装したために起こりました。実際に$12 million のロケットが破壊されてしまったそうです。こんなロケットを打ち上げるプロジェクトに関われるなんてことはそうそうないと思いますが、普段のプロジェクトでも注意してコーディングしたいですね。
“Expert C Programming” を読んでいてunsign と sign を扱うときにおもしろかった違いがあったのでメモ。