1 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 06:39:50 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 17 pc11.2ch.net/test/read.cgi/tech/1185286631/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 94代目 pc11.2ch.net/test/read.cgi/tech/1185452895/
357 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 11:58:03 ] struct hoge { char name[1024]; int mark; }
358 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 12:24:47 ] 生のデータを持つために、 struct { char name[1024]; int mark[3]; }
359 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 17:58:54 ] a = (struct A *)buf; b = (struct B *)buf+20; Bの構造体にbufの20バイト後から取り出したいんだけど この記述はできない?
360 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:07:15 ] >>359 の記述のままでもおk でも、>>359 は何か根本的なことが分かっていない気がする
361 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:07:53 ] >>359 bufがchar *などであるなら、 struct B b=*(struct B*)(buf+20)
362 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:09:37 ] >>360 すっとこどっこい。
363 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 18:17:56 ] offsetとか使いたいのではないのかなあ
364 名前:359 mailto:sage [2007/08/25(土) 22:23:25 ] 一応できた. でもあんまり理解してないorz
365 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 00:57:24 ] システムコールってC言語ですか?
366 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 07:15:28 ] 共用体(union)の中で構造体使うと うまく領域を確保できなくてデータが変になる現象が起きてます。 今は使わない文字配列を共用体の中に書いて 無理やり余裕を持たせて領域確保してるんですが 共用体で使うメモリ領域をうまく確保する方法はありますか? ちなみに環境はVineLinux4.1でgcc3.3.6コンパイラ使ってます。
367 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 07:24:22 ] うまくいかないソースと現象の詳細を示せ
368 名前:366 mailto:sage [2007/08/26(日) 08:00:38 ] 説明しにくいんですけど 2Dのrobocup用ライブラリlibsclientをいじってて http://www.koders.com/c/fidD6E7EBDD071F6F9579D1CAF12EF2FC434F5F7074.aspx 292~295行目 typedef struct _Ppos { WhichTeam team ; // enum(WhichTeam=int) int unum ; } PlayerInfo ; に「int type;」というのを追加してライブラリとプレイヤーを再コンパイルして 実際にサーバーに接続してみたら動作が明らかに変になるんです。 312~317行目 union { PlayerInfo player ;// 292~295行目の構造体 Side side ; // enum(Side=int) FlagPos fpos ; // enum(FlagPos=int) LinePos lpos ; // enum(LinePos=int) } id ; ここに「char hoge[30];」を追加すると問題なく動作するようになるんで 共用体で構造体の大きさの領域が確保できてないという結論に至ったわけです。
369 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 11:14:49 ] 結論に至る前に sizeof で大きさを調べてみろ
370 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 13:08:10 ] make cleanしてないんじゃねーの?
371 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 13:27:06 ] >>365 システムコールはC言語でもサポートされていますが システムコールはC言語ではありません
372 名前:366 mailto:sage [2007/08/26(日) 13:49:54 ] >>370 それでしたorz ライブラリとプレイヤ自体はmake cleanしてたんですが ライブラリを読み込んでるプレイヤ共通の関数をまとめたやつをし忘れてました。 >>367 ,>>369 ,>>370 こんな僕にレスしてくれてありがと
373 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:34:06 ] 相談なんですが,ファイルに以下のように保存されていて, a[1]=AAA a[2]=BBB a[4]=DDD これを以下のように新規で追加,削除,変更などしたい場合, a[1]=AAA a[2]=ABC a[3]=DEF 一回全部読み込んでbufなどに保存し,それから一気に全部ファイルへ書き込む方法が あると思いますが,それ以外に方法ありますか?
374 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:43:43 ] >>373 固定長レコードもファイルならfseekで該当レコードのところにファイルポインタを 位置決めしてfwriteでレコードを上書き。
375 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:53:28 ] >>373 データをファイルの最後尾に書き込みして 読み込み時、重複する場合は「もっとも後ろにあるデータ」を有効とするとか たとえば a[1]=AAA a[2]=BBB a[4]=DDD ↓ a[1]=AAA a[2]=BBB a[4]=DDD a[3]=DEF a[2]=ABC a[4]= 読み込み時にデータ(a[2]=BBB)をデータ(a[2]=ABC)で上書きする感じ a[3] は新規追加、a[2]は変更、a[4]は値なしなので削除
376 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 22:01:50 ] >>374 その標準関数を使ったことないんで調べてみます >>375 その方法も考えたんですが,何回も書き込みを行うとデータが多くなり 読み込むのに時間がかかりそうなんで,有効データだけ残す方法をとりたいですね お二人様サンクスです!検討してみます
377 名前:デフォルトの名無しさん [2007/08/27(月) 17:11:43 ] 超初心者ですみません。 2の0乗+2の1乗+2の2乗+2の3乗+2の4乗+・・・ というプログラムはどのようにしたらよいのでしょうか? いろいろ調べてかいてみたのですができませんでした>< どなたかアドバイスお願いしますm(__)m
378 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 17:19:53 ] 1 + 2 + 2 * 2 + 2 * 2 * 2 + 2 * 2 * 2 * 2 + ...
379 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 17:40:04 ] for(n=1, sum=0;;n*=2) sum+=n;
380 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 17:47:15 ] >>377 しょぼくて申し訳ないが、 int hoge(int count){ int result = 1; if(count <= 0) return 1; for(int i=1;i<count;i++){ result += 2*i; } return result + hoge(count-1); }
381 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:12:29 ] 二進法で結果を出力するプログラムならこれでいいよ。 #include <stdio.h> int main(void) { for (;;) putchar('1'); }
382 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:14:02 ] // ウンコード int func(size_t n) { int ret = 1; size_t i; for (i = 1; i < n+1; ++i) ret += 1<<i; return ret; }
383 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:15:40 ] ウンコードなんて、クソースのパクリみたいだな、¢50徴収するぞ?
384 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:00:13 ] >>377 pow(2, n+1) - 1
385 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 19:40:33 ] >>377 ~(~0<<n)
386 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 20:01:40 ] ビット演算凄いです^o^
387 名前:デフォルトの名無しさん [2007/08/27(月) 21:15:03 ] Javaで言うところの「equals」ってC言語だと何ですか?
388 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:17:00 ] Javaの何のクラスのequals?
389 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:17:59 ] >>387 ==
390 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:18:36 ] >>387 C言語には対応するものはないかな? C++なら、状況応じて==をequals風に定義しなおすことになる。文字列とか。 Javaのように==とequalsを明確に区別することはできない。
391 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:25:34 ] Stringクラスのequalsならstrcmp関数だろ あくまで、文字列比較という意味でね もっとも、equalsメソッドはオブジェクトのデータの比較だから そういう意味なら、オブジェクト指向でないCにはそれに該当するものはない
392 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 21:31:41 ] memcmp (^^;
393 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:11:53 ] Cの場合、 構造体だと、専用の比較関数作らなきゃならんね。
394 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:18:11 ] Object.equalsだったら、ポインタに対する==演算子が最も当てはまる存在だな。
395 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:27:05 ] 387です 失礼しました、説明が足りなかったようで・・・ Javaでは、([変数].equals("○○○")) と書くところを C言語だとどのように書くのかという意味です
396 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:31:16 ] >>395 何も読んでないのか? クラスによってequalsの挙動は違うだろうが。
397 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:31:47 ] >>395 [変数]の型は何? 派生クラスでオーバーライドできるから、 クラスによって挙動が違い、Cで対応するものも異なる。 なお、Stringなら>>391 。
398 名前:デフォルトの名無しさん [2007/08/27(月) 22:48:56 ] ファイルのプロパティの概要で表示されるタイトルに そのファイルの拡張子を除いたファイル名を設定するプログラムを作成したいのですが どのようにすればタイトルに書き込めるのでしょうか?
399 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:53:24 ] >>395 if (strcmp(変数, "○○○”) == 0) ・・・
400 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 22:55:30 ] >>398 プロパティ窓を取得、拡張子まで削ってSetWindowText
401 名前:398 [2007/08/27(月) 23:11:00 ] >>400 プロパティ窓はどのようにして取得するのでしょうか?
402 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 23:17:33 ] >>398 IPropertyStorageでググればいろいろ見付かる。 ただし、Cでやるのは面倒。少なくともC++は欲しい。 なお、この情報は、NTFSの副次ストリームに保管される。 あるいは、OLE構造化ストレージ(2003までWord/Excelファイルなど)なら ファイル自身に保管される(このため構造化ストレージならNTFSでなくても可能)。
403 名前:398 mailto:sage [2007/08/27(月) 23:20:09 ] >>402 Cでは厳しいですか・・ 調べてみます ありがとうございました
404 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:01:37 ] t
405 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 03:30:57 ] >>404 ありがとうございました
406 名前:デフォルトの名無しさん [2007/08/29(水) 11:41:07 ] 377です。 みなさんありがとうございます><
407 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 20:34:19 ] * 引数 :char *data : 追加したい文字列 * : int index : 追加したい位置 * : element *new_data : 新しく追加するリスト * 戻り値:成功1,失敗-1 */ int add_data(char *data, int index, ELEMENT *new_data){ ELEMENT *tmp; int cnt = 0; if(data == NULL || index < 0 || index > element_cnt || new_data == NULL){ return -1; } new_data->data = data; /* インデックスの位置の直前に移動 */ for(tmp = head;cnt != index;cnt++,tmp = tmp->next); new_data->next = tmp->next; tmp->next = new_data; printf("help\n"); return 1; } こんな感じでリスト構造にデータを入れる関数を作ったんですが、 Borlandでは正しく動くのにVisual Studioでは呼び出しもとに返らず終了してしまいます helpというプリント文は表示されます。どなたか、解決策を教えてもらえませんか? ↓がリストの構造体です typedef struct element { char *data; struct element *next; } ELEMENT;
408 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:11:45 ] >>407 そのソースだけだとわかんないなぁ 引数の「char *data」はその都度領域確保されているの? それから「element_cnt」って要素数だよね?いつインクリメントしてる?
409 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:14:25 ] >>407 デバッガでも使って確かめろ位しか
410 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:20:40 ] >>408 そうですよね。>>409 さんのデバッガを調べてみます 「char *data」はただダブルコーテーションで文字列を渡すだけしてます 「element_cnt」については処理を書き込み忘れました
411 名前:408 mailto:sage [2007/08/29(水) 21:31:46 ] >>407 それから追加するインデックスを0にした場合は 実際に追加されるのはインデックス1の場所にならない? 0の場合headを書き換えないとおかしくなるんじゃない? まぁあと/* インデックスの位置の直前に移動 */ といっているけど cnt!=index ってことはindex の位置で止まる で >new_data->next = tmp->next; index+1の要素を新要素の次の要素にする >tmp->next = new_data; indexの次の要素を新要素にする 結局追加される場所はindex+1の場所にならない?
412 名前:407 mailto:sage [2007/08/29(水) 21:50:13 ] >>411 すいません!書き忘れてましたけど、headはstatic変数で今回ダミーとして扱います ちなみにheadはhead->next = NULLで初期化してあります。 for文の初期化でtmp = head;とあるので、head->nextでダミーではない値をもつリストに入るときにはcntは1になっています なのでcnt == indexはひとつ前になるんじゃないかな〜と考えてます。間違えてたらすいません
413 名前:408 mailto:sage [2007/08/29(水) 21:54:23 ] >>412 つまり head->next が最初の要素ってことですね なら納得です だとすると、やはりこのソースからだと分かりませんね 私はここまでです
414 名前:407 mailto:sage [2007/08/29(水) 22:11:13 ] >>413 そうですか、ありがとうございました。 原因はこれだけのソースではわからないと思うので、ななし.orgに全部のソースをアップしました 見てくれるなら見てほしいです。んでVisualStudioで実行してほしいです まだ途中なんでできたらツッコミとかよろしくおねがいします
415 名前:408 mailto:sage [2007/08/29(水) 22:33:26 ] >>414 そういうときはURLも貼ってくれないと ななし.orgってどこですか?
416 名前:407 mailto:sage [2007/08/29(水) 22:43:24 ] すいません。。ここです 77c.org/upload.php?fn=off&page=1
417 名前:408 mailto:sage [2007/08/29(水) 23:02:01 ] >>416 まずここかな void init_list(void){ ELEMENT top; head = ⊤ element_cnt = 0; head->next = NULL;printf("\(^o^)/"); } ELEMENT top; は関数のローカル変数 head = ⊤ top の実体は関数抜けたら無効になる にも関わらず 関数外でhead(top) にアクセスしてる
418 名前:407 mailto:sage [2007/08/29(水) 23:12:46 ] >>417 ああ〜!そうですねw普通におかしいですね
419 名前:408 mailto:sage [2007/08/29(水) 23:16:02 ] >>418 一応こちらの環境(BCC5.5)では>>417 を改善することで動作はします (もう少し動作チェックしてみますが) それから余談ですが、ポインタ配列使うなら ELEMENT next いらないんじゃないですか? せっかくポインタ繋ぎしてるんですから add_data() 内で new_data=(ELEMENT *)malloc(sizeof(ELEMENT)) してみては? いまは動作チェックが目的でこうしているというならゴメンナサイね それから最後にfree()も忘れずに
420 名前:407 mailto:sage [2007/08/29(水) 23:24:18 ] 改善しました!>>408 さん、ありがとうございました! 関数内でmallocはしなくて良い、と言う問題だったので、main側で確保したんです。 自分も関数内で確保した方がいいと思うのですが・・・
421 名前:408 mailto:sage [2007/08/29(水) 23:52:07 ] >>420 そういうことですか 分かりました それらが題意であるならしょうがないですね 余計なことかもしれませんが、 remove_element() は要素を削除するんですよね? この方法(配列上で行う連結リスト)だと要素を削除した後、その後追加する際に、 空いている要素と空いていない(使われている)要素の区別がつかないので その点も考慮していく方がよろしいかと思います
422 名前:421 [2007/08/29(水) 23:53:29 ] #include <stdio.h> main() { static int a[5]={15,8,48,50,27} int sum,heikin,i; sum=0; for(i=0;i<5;i++){ sum=sum+a[i]; } heikin=sum/5; printf("goukei=%d\n",sum); printf("heikin=%d\n",heikin); } これにあと配列中の奇数と偶数の数を出力するのを追加したいんですが どうすればいいんでしょうか?
423 名前:407 mailto:sage [2007/08/30(木) 00:02:53 ] >>421 確かにそうですね。mainの考慮をしてみます!
424 名前:408 mailto:sage [2007/08/30(木) 00:05:50 ] >>422 こんなんでどうですか? 配列中の値を2で割ってあまりが出るかでないかで奇数、偶数を判断 #include <stdio.h> main() { static int a[5]={15,8,48,50,27} int sum,heikin,i; int kisu=0,gusu=0; sum=0; for(i=0;i<5;i++){ sum=sum+a[i]; if(a[i]%2) kisu++; else gusu+++ } heikin=sum/5; printf("goukei=%d\n",sum); printf("heikin=%d\n",heikin); printf("奇数 %d個 / 偶数 %d個",kisu,gusu); }
425 名前:408 mailto:sage [2007/08/30(木) 00:08:32 ] >>422 ところでなんで 421 なんですかね? >printf("奇数 %d個 / 偶数 %d個",kisu,gusu); 改行忘れたので入れといてください printf("奇数 %d個 / 偶数 %d個\n",kisu,gusu);
426 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:09:46 ] おまえも、関係ないなら名前の所の番号外せ
427 名前:422 [2007/08/30(木) 00:15:18 ] >>425 ありがとうございます。 名前はミスして書いてしまったようです。すいません^^;
428 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:26:43 ] 怒られちった
429 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 21:19:36 ] 質問です。 例えば、データの処理(検索など)を行いながら、 同時に秒単位で経過時間を標準出力するといったようなことってできますか? できるのであれば教えていただきたいのですが。
430 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 21:44:54 ] >>429 検索のループ中に時間表示機能入れるなり、スレッド作るなり、signal使うなり まぁ状況次第でなんなりとどーぞ。
431 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:14:55 ] 奇数偶数なら if(a[i] & 1) //奇数 else //偶数 では?
432 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:18:54 ] >>431 % 2 でなにか不都合なことがあるの?
433 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:22:31 ] >>431 負数が2の補数表現で無い環境の場合はうまくいかないんじゃない? (そんな環境があるかどうかは知らないが…)
434 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:38:35 ] 問題の中に負数がないからどっちでもいいよ
435 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:58:46 ] >>432 もちろん論理的な不都合はないです。 ただ除算は一般に非効率なので、高速化を狙った提案。ですが、、 >>433 たしかに、そうですね。 使用可能かどうかの確認は必要だと思います。
436 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:46:43 ] >>435 大丈夫、まともなコンパイラなら%2を割り算では実装しないから。
437 名前:435 mailto:sage [2007/08/31(金) 02:43:21 ] >>436 gcc -S で試したら、確かに論理命令が生成されてました。 しかもunsigned だと n % 1 と n & 1 は完全に同じコードに。 勉強になりました。流れ止めて失礼しました。
438 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:54:01 ] > n % 1 と n & 1 は完全に同じコードに バグじゃね?
439 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:57:08 ] バグだな
440 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 10:08:56 ] n%2の間違いだろ、突っ込んでやるなよw
441 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:31:29 ] 実数で計算した結果の小数点以下を切り捨ててて 整数のところだけを別の計算に使いたいのです。 どのようにすればできるのかでしょうか。
442 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:37:22 ] >>441 一度 int にキャストする (正数のときのみ)、あるいは floor()。 入門以前のレベル。本くらい買え。
443 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:40:06 ] 472 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/31(金) 14:55:28 浮動小数点の小数点以下を簡単に取る方法ってないですか? 473 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/31(金) 15:13:39 f - floor(f)
444 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 18:40:31 ] 文字列とfor文についての質問です。 --出力結果-- sample01.txt sample02.txt sample03.txt sample04.txt sample05.txt ------------ 上のように出力し、かつそれぞれを格納したいのですが、 数字の部分に繰り返し文を使ってうまくやる方法がわかりません。 おしえてくらはい><
445 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 18:52:51 ] sprintf(fname, "sample%02d.txt", i);
446 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 19:08:26 ] あまりの入門レベルにワロタwww
447 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 19:17:16 ] 入門篇だからいいんじゃね?
448 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 22:00:31 ] でも入門書くらい読めよ、てのが少なくない。
449 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 22:41:01 ] >>445 うまくいきそうです!ありがとうございました!!
450 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 00:38:58 ] >>429 できなくはないが、C言語入門の範疇じゃないな。 OS関連のプログラミングを勉強しないと無理。
451 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:05:03 ] >>444 char filename[5][100]; for (i = 0; i < 5; i++) { sprintf(filename[i], "sample%02d.txt", i + 1); printf("%s\n", filename[i]); }
452 名前:デフォルトの名無しさん [2007/09/01(土) 23:22:05 ] uintptr_t とかsize_t型ってなんなんですか これもwindowsプログラミング特有の、#defineした型なんでしょうか?
453 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:23:29 ] #defineはしてないと思うよ^^
454 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:35:05 ] >>452 size_tは標準の型。 unsigned intとかunsigned longあたりのtypedef。 strlen()のリターン値とかで使われてる。 uintptr_tは知らんけど、 docs.sun.com/source/806-4836/conv_v9.html これを見ると、導入が予定されてるのかな?
455 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:12:21 ] size_tは標準Cに入っている記憶域の大きさを表す型、 sizeof演算子の結果の型と定められている。 uintptr_tはC99から導入された<stdint.h>で宣言されている型の1つで、 ポインタをキャストしても表現を失わないと規定されている符号無し整数型。 VC++でも最近はuintptr_t/intptr_tだけ<stdlib.h>で宣言されている。 <stdint.h>ごと入れればいいものを。 Windowsプログラムなら、uintptr_tよりUINT_PTRのほうが良く見かけるな。 こっちはWindows APIの型とされているし、 VC++にuintptr_tが入るよりも前から存在していたから。
456 名前:デフォルトの名無しさん [2007/09/02(日) 00:43:43 ] 一週間ほど前にプログラミングをCから始めまして現在、 ttp://homepage3.nifty.com/mmgames/c_guide/05-02.html まで勉強しました。そこで、もっといいサイトがあるよ〜 っていうのがあれば教えてくださいm(_ _)m できれば書籍等も・・・・ 教えて君で失礼しますた(´・ω・`)
457 名前:452 [2007/09/02(日) 00:48:08 ] >>453-455 ありがとうございます。 なるほど、typedefでしたか・・・・。