C言語に関するMasaMuraのブックマーク (2)
-
まえおき 巷では﹁プログラマーになりたい人に初学者にとって、ポインタという考え方がわけわかめ﹂という話がよくあります。 そこでいろいろな人が﹁ポインタは住所だ﹂とか﹁変数がハコで﹂とか手を変え品を変え分かりやすいように説明してくれています。 それでもなお﹁ポインタがわかりづらい﹂という人が後を絶ちません。 もういっそのこと、例え話をやめてド直球で攻めたらいいんじゃないでしょうか。 Hello, Worldより簡単に サンプルコード 以下のコードを考えます。 void main() { int a; int b; int c; a = 1; b = 2; c = a + b; } ﹁#include <stdio.h>﹂なんていう謎のオマジナイはこの際ナシです。あんなもの無くたってC言語は成り立ちます。 まぁ見ての通り、どこにも何も出力されませんが。 このプログラムは、﹁c = a + b﹂
-
C言語の可変長引数は、型安全でない︵まちがった型の引数を渡してもコンパイルエラーにならない︶とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数﹁sumf﹂を例にあげて説明します。C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a
-
1