C言語なら、俺に聞け! <16>
■ このスレッドは過去ログ倉庫に格納されています
0001マカー代表 日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するような救いがたいやつはこれでも読め
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711
推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50
・前スレ C言語なら、俺に聞け! <15>
http://pc.2ch.net/test/read.cgi/tech/1016519243/l50
0153デフォルトの名無しさん
NGNGそのfooの実体が存在せんのだ。よって中身も無い。
幽霊に内臓が無いのと同じだYO!(ワラ
0155デフォルトの名無しさん
NGNGレス読むときはゆっくり読みなよ。
人間話すより読むほうが速いから、
読む速度で行くと理解できなくなることもある。
ゆっくりじっくり、しゃべるのより遅いくらいの速さで読んでみそ。
0156デフォルトの名無しさん
NGNGブロック内の未代入の変数、ポインタ変数の値は未定義です。
fooはメモリ上の正しいインスタンスのアドレスを保持しなければ
foo->nameをしても、もうヴァカかとアフォかとという状態になります。
あとねfoo->nameの演算子は(*foo).nameと同じです。
0157デフォルトの名無しさん
NGNGポインタなのは*fooじゃなくてfooだけど・・・
それ以外はそんな感じでいいYO!
0158156
NGNGchar name[32];
}SMP;
は型の宣言で定義ではないからメモリの割当ては行われない。
SMP *foo
の宣言(これは定義でもある)はポインタ分のメモリ割り当てしかしない
バイトアドレスが4バイトの処理系なら4バイト割当てられる。
自動変数だから初期値はゴミ
fooの参照先は >>137のように明示的にメモリ割当てを行わなければならない。
0161159
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGある日某専門学生のゲーム作品を見ていて、一つふに落ち着かないことがあった。
それは、彼らが作品を起動し終了をさせるたびに再起動し、また作品を起動させるのであった。
あまりに気になったので彼らに何故そんなことしているのかと問い掛けた。
そしたら、重くなって起動できなくなるらしい。
ソースを見せてくれないか?と問い掛けたら、彼らは気兼ねなくそのソースを見せてくれた。
私は絶句した・・・DirctXを使ったゲームのプログラムだったのだが、
全ての終了コードにはこう打たれていた・・・
exit(1);
と、彼らに未来はあるのだろうか?
全てノンフィクションでおおくりしました・・・
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGオブジェクトリリースがされて無かったってこと?
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGpint a = pint();
if ( a==NULL ) print( "あひゃ(・∀・)";
これ、typedef使わずにやるにはどうすればよかと?
0169168
NGNG0170デフォルトの名無しさん
NGNGEOFはファイルじゃないと使えなかった?
0171デフォルトの名無しさん
NGNG文字列なら、\0とかでいいんじゃないの?
0172>>139
NGNGC といっしょに、*UNIX の勉強した方が早い* と進言致します。
低水準とか高水準って説明を真に受けないで、
標準関数とシステムコールの違いをしっかり意識してからの方が
理解が早いでしょう。
こんな感じの本かな
http://www.amazon.co.jp/exec/obidos/ASIN/4894713195/250-9016572-4192253
0174159
NGNG文字列じゃなくて標準入力からEOFは打てないのかという質問ではないですか?
0175デフォルトの名無しさん
NGNG南無・・・
0176デフォルトの名無しさん
NGNGダメ。 入力されて判断してるから、無限になっちまうす
0177デフォルトの名無しさん
NGNGサーフェイスいじくってると面白いように落ちる(←アフォ)けど、
やっぱあれはDirectDraw残ってるのかなぁ。
ウィンドウが消滅した時点で自滅してくれるとうれしいんだけどなぁ。
0178デフォルトの名無しさん
NGNGつか、どういうコード?
0180デフォルトの名無しさん
NGNGイキロ!
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGん、、、どうでもいいってことかな?
0184デフォルトの名無しさん
NGNG入力をchar型で受けてない?
K&R開いてgetchar()とかの帰値の型を空の穴くまでみれ。
0185173
NGNG勝手に開放されるのもうれしいけど、それだと逆に怖いよ
0186デフォルトの名無しさん
NGNGwhile(*(str++) != '\0'){
・・・
}
というでわないのか?
0188デフォルトの名無しさん
NGNG違うみたい。でも、入力をCHARで受けてる。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGchar c;
while((c = getchar()) == EOF) {
my_count(c);
}
my_print();
これなら少なくとも cがintでないと無限ループになるよ
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGすげー混乱した。
0194デフォルトの名無しさん
NGNGそうなら、
((c = getchar()) != '\n'
とかで改行終了とか
((c = getchar()) != 0x1b
ESC終了とかでいいでしょ。
0195デフォルトの名無しさん
NGNGchar がsignedなら、終わる。
0196デフォルトの名無しさん
NGNGint getchar(void)
です。
0198デフォルトの名無しさん
NGNG【解説】
getc(), fgetc()はファイルポインタfpで示されるファイルから1文字を入力
します。
getchar(), fgetchar()は標準入力(stdin)から1文字入力します。
getc(), getchar()はマクロとして定義されています。
これらはcharではなくint型の値を返すことに注意してください。
【リターン値】
入力した1文字を返します。ファイルの終りに到達した時には、値EOFを返し
ます。エラーを検出した場合にもEOFを返しますので、EOFかエラーかの判定
はfeof(3), ferror(3)を使ってください。
0199デフォルトの名無しさん
NGNG質問者は寝たか。
0200デフォルトの名無しさん
NGNGどんな感じにコードかけば良いでしょうか?どこかにサンプルコードとか
おちてないでしょうか?
0201デフォルトの名無しさん
NGNGなら、最初からそう質問してくれ・・・
http://pc.2ch.net/test/read.cgi/tech/992057422/
に、いらんレスつけちゃったじゃないか。
0202デフォルトの名無しさん
NGNGスピードの問題ならアセンブラもゲームでは有効だということなんですか?
0203デフォルトの名無しさん
NGNG上のはホントです。
下のは一部のライブラリにおいてホントです。
0204デフォルトの名無しさん
NGNG>>125からのやりとりを見て心底思った。
0205デフォルトの名無しさん
NGNGということは、cを中途半端な状態でjavaに行くよりしっかりとcを極めたほうが
言いということでしょうか?それとアセンブラもわかってないと困ることに
なるんでしょうか?
よろしくお願いします。
0206デフォルトの名無しさん
NGNGできればいきなりjavaに行くのがいいと思うが・・・
cにどっぷりつかっちゃうと、javaのスタイルになれるのに時間がかかる
0207デフォルトの名無しさん
NGNG自分が何をやりたいのかはっきりさせること。
これが一番大事。動機付けて勉強できるという意味じゃ
他の分野の勉強するよりもプログラミングってのはいい位置にある。
目的がはっきりすれば自ずとどんな知識が必要になるのか分かるってもんだ。
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG基本的に>>206に同意する。
つまり、Javaのスタイルに慣れておけば、Cでも、見通しや保守性の良い
スタイルでプログラミングできるようになると思う。
あと、アセンブラを勉強しておくと、実行効率の良いプログラムが
書けるようになるはず。
ちなみに、アセンブラはCやJavaに比べると単純な言語なので、
覚えるのは簡単。ただ単に、書く量と手間がかかるだけだよん。
0210デフォルトの名無しさん
NGNG俺はアセンブラをRISCの様な言語だど言ったらモルァ!すれでゴルァ!された。
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGマジでそう思うの?
0214デフォルトの名無しさん
NGNG205じゃないですが、なるほど。
一通りCを勉強したらJavaもやってみますわ。
0215デフォルトの名無しさん
NGNG> ただ単に、書く量と手間がかかるだけだよん。
これがやっかいなんだが・・・
0216デフォルトの名無しさん
NGNG禿ドウ
言語やライブラリの知識があっても何も作らない人もいる。
それはそれで別にいいんだけど、そういうやつに限って
人に知識を自慢してきてウザかったりすることが多い
やっぱプログラマたるものなんか作ってナンボだよな
言語オタは逝ってよし
0217デフォルトの名無しさん
NGNGどうすればいいですか?
0218デフォルトの名無しさん
NGNGで切り上げてjavaに行くかで悩んでるのですが、そのあたりはどうなんでしょうか?
0219デフォルトの名無しさん
NGNG市販のゲームはほとんど全部C/C++製だろ?
0220デフォルトの名無しさん
NGNG単純にプログラム起動時に一度だけテーブルを作成すればいいんじゃない?
0221デフォルトの名無しさん
NGNGポインタ知らないとバカにされます。
一生JavaやC#の様な過保護箱庭言語だけ使うつもりなら止めませんが。
0222デフォルトの名無しさん
NGNGそういうのだけはなりたくないな。
0223デフォルトの名無しさん
NGNGポインタの理解は必須です。つまり、こんぷーたを本当に理解したいか否かです。
アセンブラもやった方がいいに越したことはないですが、
C のポインタを構造体、共用体を絡めてきちんと理解できていれば十分でしょう。
まぁ、これを理解するのもアセンブラをやったほうがハヤーイかも知れません。
アプリケーションだけを作っているつもりなら、
C をやらずにいきなり Java などの方が良いかもしれません。
その方がおぶじぇくとシコウをすんなり受け入れられるでしょう。
(この辺は >>206 にはげどうです。)
0224デフォルトの名無しさん
NGNGそれは絶対にいやなんですけど。
やっぱポインタを極めてからjavaに移行するほうが身のためでしょうか?
でもあんまりCにはまるとjava理解するのに時間がかかるという方が多いので、
jabvaがわからなくて大規模プロジェクトに参加できないのではと不安になって
しまいます。ちなみにポインタを極めるのには思いっきりやっても自分の場合、
半年から1年はかかりそうなんですが。
0225217
NGNGそれはそうなんですけど
atan2ってy/xから角度出すじゃないですか
どうやってテーブルを作成すればいいのかな、と思いまして・・・
うう、能力不足
0226デフォルトの名無しさん
NGNGポインタは、確かにひっかかりやすいところもあるけど、
まず本読んで、自分で書いてみないことにははじまらない。
わかんなくなったらまた聞きに来なさい。
0227デフォルトの名無しさん
NGNGatan_array[y][x]
みたいなのに入れとけばいんじゃない?
atan_array[y/x]ってやるのは得策じゃないと思う。
0228デフォルトの名無しさん
NGNGどこでどの仕事しようがタダの*兵隊*にしかなれん。
Cをある程度やれば、OSと、その背景にあるコンピュータそのものの理解が
必須になってくるが、Javaから入ると、VMの理解だけにとどまってしまう
可能性がある。ガベコレがどーのとかあおってる連中とかが陥ってる罠だな。
視野狭窄だ。
ポインタを覚えるのが重要なのではなくて、もっと、アプリケーションを支える
環境(OS, ハードウェア)がどうなっているのか、ということに留意すること。
0229デフォルトの名無しさん
NGNG何でもCでできるんだ!っていうC厨にならなければいい(すべての言語に言えるけどね)。
ポインタを知っておけば参照とかオブジェクトとインスタンスの関係などがイメージしやすいかなと思います。
なんでも知っている分には損はない。
0230デフォルトの名無しさん
NGNG一度便利な環境に触れてしまうと不便な環境には戻れない。
0231デフォルトの名無しさん
NGNGあこがれるけどなりたくはないな。
0232初心者
NGNG0233デフォルトの名無しさん
NGNGなんとかなります。
>>228の意見にはよく耳を傾けておくこと。
そしてPC-UNIX、(以下略
0234217
NGNGどうもありがとう
なるほど、分けて考えればよかったか
ただ配列がでかくなりそうだ・・・
大丈夫かな
0235デフォルトの名無しさん
NGNGC++は分からないけど、Cなら大丈夫でしょう。
ポインタだって通常の変数と同じようなものだと考えれば引っかかることはないし。
0236227
NGNGゲーム等に使うなら、256x256くらいの分解能があればだいじょぶかも。
atan_array の型をsigned shortにして、整数部 9bit(符号付) + 小数部 7bitの
固定小数として扱えば、±180度カバーできて、1要素2バイトなので、
デーブルサイズは128KBでいけるかな。
0237デフォルトの名無しさん
NGNG参照時の動作が異様に普通の変数と違いますが・・・。
0238227
NGNGごめん。よく考えたら、2次元配列にするひつようなかった。
xとyの絶対値が大きいほうが256とか1024になるように正規化
(xがデカい場合は、y = 1024*y/x; x = 1024; みたいな)すれば、
degree = atan_array[xかyの絶対値が小さいほう];
ってな感じで、1次元配列でOKでした。
0239224
NGNGそれと、アセンブラなどの知識はどの程度もっていたらいいでしょうか?
やっぱりゲームとかやりたいなら、結構やっておいたほうがいいでしょうか?
それと、ゲームではどの程度アセンブラが使われているのでしょうか?
0240デフォルトの名無しさん
NGNG世に出てるゲームで、VB製がどれだけあるか考えてみろ
VBでインラインアセンブラが使えるか考えてみろ
VBは確かに糞ゲーが多いが、そんなことを質問している時点では
その糞ゲーすら作れないから安心してできる事からやれ。
そもそも3Dのゲームでも現在はアセンブラを使うのはごく一部。
最適化ヲタでもない限り、わざわざアセンブラを使う野郎は少数派
0241デフォルトの名無しさん
NGNGこれからはPERLだよ、PERL。わかったか、ヴォケ
0242デフォルトの名無しさん
NGNGVer 6まで行こうとしてる言語が新言語か?
0243デフォルトの名無しさん
NGNGおそらくまだかなり若いのでしょうけど、はっきりいって、プログラミングに向いてないと思います。
プログラミングは自分で体を動かさないと身につきませんよ。
0244217
NGNGそっちのほうがよさそうですね
使わさせてもらいます
0245デフォルトの名無しさん
NGNGそれは言わない約束だろ
0246デフォルトの名無しさん
NGNGWeb上では捜し物をするとあまりにいろいろなモノがヒットしてしまい
探しにくいのですが
「ここが総本山」的な日本語C言語解説サイトとかリンク集ってありますか?
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGつぅかネットなんかで基礎勉強しようとするな。
0250デフォルトの名無しさん
NGNGダメ本も数多いが、webの解説のほうがクズ率高い。
0251デフォルトの名無しさん
NGNG使い方はかわらないだろ。
0252デフォルトの名無しさん
NGNGとりあえず本は2冊以上買え。Cの入門書は比較的ハズレが多いから
1冊だけ買った本が糞だと自分も糞プルグラマーになるぞ。
■ このスレッドは過去ログ倉庫に格納されています