素人の俺がC言語の質問に答えます
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/01 01:31:090002デフォルトの名無しさん
05/02/01 01:32:2100031
05/02/01 01:58:33もちろん
0004デフォルトの名無しさん
05/02/01 02:02:2300051
05/02/01 02:08:43言語界最強だと思います
0006デフォルトの名無しさん
05/02/01 02:11:03C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/
0007デフォルトの名無しさん
05/02/01 03:42:110008デフォルトの名無しさん
05/02/01 07:16:01について、どんなことをするものか教えてください。
0009デフォルトの名無しさん
05/02/01 11:26:57見たまんまの関数ポインタですが何か?
0010デフォルトの名無しさん
05/02/01 11:39:49え、関数ポインタなのー? どこがー?
0011デフォルトの名無しさん
05/02/01 18:22:29要するに何か起きたときに呼ばれる関数を設定する関数だ。
http://www.microsoft.com/japan/developer/library/vccore/_crt_signal.htm
読み方がわからなければ
http://kmaebashi.com/programmer/pointer.html
0012デフォルトの名無しさん
05/02/03 14:52:54ttp://kmaebashi.com/programmer/pointer.html
ここの説明間違ってるし、書いた本人も分からないところを
適当にごまかしているみたいだから参考にしない方がいい。
0013デフォルトの名無しさん
05/02/03 15:17:43どこがどう違うのか教えてください
0014デフォルトの名無しさん
05/02/03 16:05:27Cの宣言の構文、とくに関数へのポインタを含む部分は酷評を受けることがある。
---K&R P.148
K&R P.148には以下のような記述がある。
int *f(); /* f: intへのポインタを返す関数 */
と
int (*pf)(); /* pf: intを返す関数へのポインタ */
は、この問題のいい例である。ここで * は前置演算子であり、 () より
低い優先度を持つから、正しい結合を行なわせるにはカッコが必要なのである。
ちなみに、上記の文には嘘がある。宣言の中の *, (), [] は演算子ではないし、
優先順位も、構文規則の中では演算子の優先順位とは別の箇所で定義されている。
================
補足:演算子の優先順位
Cには、数多くの演算子があり、しかもその優先順位が15段階もある。
これは、他言語と比べて極端に多いため、Cの参考書には、以下のような演算子の優先順位表がたいてい記載されている。
演算子 結合規則
() [] -> . 左から右
! ~ ++ -- + - * & (type) sizeof 右から左
* / % 左から右
この中で、優先順位が「最強」である ()について、
()は、プログラマが、文法で規定された優先順位を無視して 強制的に優先順位を設定する時に使用する括弧だ。
だから、 これの優先順位が最強なのは当然だ。
と考えている人は意外に多いが、それは 間違いである。もし、この ()がそのような意味なら、わざわざ優先順位表に載せる必要はないはずである。
この表の() は、(K&Rにもあるように)関数呼出しを意味する演算子であり、この場合の優先順位とは func(a, b) のような関数呼出しにおいて、func と (a, b) との間の結び付きの強さを表現している。
Cでは、「関数へのポインタ」という型があり、以下のような記述が可能なので、このような優先順位が必要なのである。
================
著者は分裂症
0015デフォルトの名無しさん
05/02/03 16:20:26それのどこがおかしいのか教えてくれ
0016デフォルトの名無しさん
05/02/03 18:22:14全然おかしくないよ。
0017デフォルトの名無しさん
05/02/05 00:51:41なるほど、言われてみれば納得がいく
なんか感動した
0018デフォルトの名無しさん
05/02/06 01:38:090019デフォルトの名無しさん
05/02/18 07:43:55C言語もoperatorでオーバーロードできるように拡張されたか…
0020デフォルトの名無しさん
05/02/18 07:56:340021デフォルトの名無しさん
05/02/18 08:03:510022デフォルトの名無しさん
05/02/18 12:34:08あとC言語にboolってありましたっけ
0023デフォルトの名無しさん
05/02/18 13:52:48>exit()
main()以外から明示的にOSに脱出したいとき。
>bool
C99なら stdbool.h そうでなくても作っておけばいい。
0024デフォルトの名無しさん
05/02/18 15:43:36あとよくサンプルコードでfopen失敗したときに、よくexit(1)ってやってますけど
あれってreturn 0だと駄目なんですか
002524
05/02/18 16:00:57すみません
■ このスレッドは過去ログ倉庫に格納されています