- 1 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:11:47 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 24 pc11.2ch.net/test/read.cgi/tech/1201083176/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 104代目 pc11.2ch.net/test/read.cgi/tech/1202135539/
- 96 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:06:36 ]
- >>95
ループで各要素に初期値を代入する。 2次元配列の場合は2重ループで初期値を代入する。 char buf[256];が文字列だったら、strcpy(buf, "");
- 97 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:09:13 ]
- その前に、本当に初期化する必要があるかどうかチェックしてね。
無駄に初期化する人が多いから。
- 98 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:15:11 ]
- >>96
それってstrcpy使う必要あるのか?
- 99 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:22:59 ]
- 初期化することって規約があることもあるんだぜ・・・。
- 100 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:25:44 ]
- 初期化する必要ない場合ってどういう場合?
LINUXでいいデバッガない?
- 101 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:26:19 ]
- 初期化する必要ない場合は初期化する必要ない場合
- 102 名前:96 mailto:sage [2008/02/23(土) 02:26:53 ]
- >>98
ヌル文字での初期化の場合ね。 buf[0] = '\0' でもいいんだが、好みの問題。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:29:08 ]
- double data[10000]={0}だと初期化できてないみたいなエラーでるけどこれは
範囲あるの?
- 104 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:29:32 ]
- >>102
最適化すればオーバーヘッドなくなるのかな? まぁもともと無視できるほどの差だろうけど
- 105 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:30:57 ]
- >>103
規格では全て 0 で初期化されるはずだが。 警告出すコンパイラならあるけど。 ただ、コンパイラが糞だと知らん。
- 106 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:34:47 ]
- セミコロンがないとかじゃないよな
- 107 名前:デフォルトの名無しさん [2008/02/23(土) 03:15:36 ]
- www.shinetworks.net/cgi-bin/img-up/src/1203703846656.jpg
この、12行目〜16行目までの解説をお願い致します。 特に解らないのが、12行目の" if(argc > 1) { "の部分です。 配列argcが1より大きければ、と言う言でしょうか?
- 108 名前:デフォルトの名無しさん [2008/02/23(土) 03:19:31 ]
- コボラーさんがC言語覚えるのは結構大変?
- 109 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:19:36 ]
- 文字列の長さも確認せずに strcpy はやばいだろ。
- 110 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:20:38 ]
- 大変? とか気にしてる時点で脈は無いわ。
- 111 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 03:28:52 ]
- >>107
argcはコマンド引数の数+1。 コマンド行がhogeのときargcは1。 コマンド行がhoge arg1のときargcは2。 だからif(argc > 1)とはコマンド引数がひとつ以上あるということ。
- 112 名前:デフォルトの名無しさん [2008/02/23(土) 04:27:04 ]
- >>111
サンクスです
- 113 名前:デフォルトの名無しさん [2008/02/23(土) 04:28:35 ]
- >>111
>>だからif(argc > 1)とはコマンド引数がひとつ以上あるということ。 ないときは、あるんですかね?
- 114 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:31:58 ]
- ないときはないよ。そんときは、argcが1になる。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:41:37 ]
- >だからif(argc > 1)とはコマンド引数がひとつ以上あるということ。
いや,2つ以上だろ.もしくは1つよりも多く.
- 116 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 04:42:24 ]
- argc==2なら引数は1だろ。
- 117 名前:デフォルトの名無しさん [2008/02/23(土) 05:09:25 ]
- ? ↓-此れは?
006: int main(int argc,char *argv[] ? >>113 ああああああぁぁあぁ… 永遠に繋げていく事か"! ? if( argc > 1, argv > 1, argc > 1) = argc[1] ?
- 118 名前:デフォルトの名無しさん [2008/02/23(土) 06:45:19 ]
- 頭が混乱してきた…整理ついたら、出直してきます
ありがとうございました
|

|