【初心者歓迎】C/C++室 Ver.16【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/04/10(日) 22:33:06ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
http://pc8.2ch.net/test/read.cgi/tech/1111231578/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0002デフォルトの名無しさん
2005/04/10(日) 22:35:37Windowsなら
SendMessage(処理させたいWindowのハンドル, WM_KEYDOWN, VK_RETURN, 0);
0003デフォルトの名無しさん
2005/04/11(月) 01:07:260004デフォルトの名無しさん
2005/04/11(月) 01:20:58STLのmapの内部では、キーの値をもとにツリー構造を構成しているとのことですが
そうするとmapに要素を挿入するときに、0からインクリメントした値のキーを使った場合は、
検索のオーダーは最悪になってしまうのでしょうか・・?
0005デフォルトの名無しさん
2005/04/11(月) 01:26:45実装によるけど、まぁ大抵は心配無用じゃないかな。
0006デフォルトの名無しさん
2005/04/11(月) 01:29:40普通はツリーといってもバランスドツリーが使われてるから、そんなにひどくならない。
↓で遊んでみるといい。
ttp://www.ececs.uc.edu/~franco/C321/html/RedBlack/redblack.html
0007デフォルトの名無しさん
2005/04/11(月) 01:46:09お返事ありがとうございます。
それほど酷くないとのことで安心しました。
>>6氏のページは今からJavaをインスコして遊んでみますヽ(´∇`)ノ
0008デフォルトの名無しさん
2005/04/11(月) 03:26:03面白いな。0から順に昇べきでノードを追加していくと、左右の木の深さが
4段階以上になると、ずるっと回転操作が行われるのな。
回転操作のプログラムを組んでみた事はあるが、実際にこうして視覚的に
見れるとよく理解できるもんだ。
0009デフォルトの名無しさん
2005/04/11(月) 03:33:19コマンドの結果を変数に入れたいのですが、わかりません。
例えば system("echo hello"); の結果を変数に入れる事を考えた場合
どのような方法がありますか。
0010デフォルトの名無しさん
2005/04/11(月) 05:01:13質問するときの「自分は初心者です。」って言うのは嫌われるぞ?
0011デフォルトの名無しさん
2005/04/11(月) 08:23:51system()を使うならファイル経由。
直接得たいならFILE * fp = popen("echo hello", "r");して後はファイルと同じ要領で入力。
0012デフォルトの名無しさん
2005/04/11(月) 12:04:14確かにそうですね。気をつけます。
>>11
回答ありがとうございました。
popen関数を使えばいいのですね大変参考になりました。
0013デフォルトの名無しさん
2005/04/11(月) 12:07:330014デフォルトの名無しさん
2005/04/11(月) 12:09:09その初心者歓迎スレで「自分は初心者です」ってバカみたいじゃない。
0015デフォルトの名無しさん
2005/04/11(月) 22:17:580016デフォルトの名無しさん
2005/04/12(火) 13:22:33という関数かマクロは標準にはあるのでしょうか?
boostにあるのならそれでもかまいません。
自分で作っちゃってもいいんですが、既にあるのならそれを使いたいなと。
0017デフォルトの名無しさん
2005/04/12(火) 14:00:17渡したポインタ(仮にp)からn要素先ではなく、nバイト先なのかな?
ってことは、p+nではなくて((char*)p)+nか。
型を戻さないといけないから、(T*)((char*)p+n)だね。
C++ならreinterpret_cast<T*>(reinterpret_cast<char*>(p)+n)か。
0019デフォルトの名無しさん
2005/04/12(火) 15:27:09002016
2005/04/12(火) 15:34:400021デフォルトの名無しさん
2005/04/12(火) 16:05:080022デフォルトの名無しさん
2005/04/12(火) 16:10:51てめえは何が言いたいんだ?標準でそんなマクロがあるとでも?
0023デフォルトの名無しさん
2005/04/12(火) 16:25:240024デフォルトの名無しさん
2005/04/12(火) 16:43:01そんなことすら理解できないのか?
0025デフォルトの名無しさん
2005/04/12(火) 16:52:180026デフォルトの名無しさん
2005/04/12(火) 16:58:230027デフォルトの名無しさん
2005/04/12(火) 17:00:200028デフォルトの名無しさん
2005/04/12(火) 17:04:560029デフォルトの名無しさん
2005/04/12(火) 17:14:59世界の民が号泣。
0030デフォルトの名無しさん
2005/04/12(火) 18:38:070031デフォルトの名無しさん
2005/04/12(火) 23:24:580032デフォルトの名無しさん
2005/04/13(水) 12:49:21デリゲートって便利ですか?
0033デフォルトの名無しさん
2005/04/13(水) 13:12:45似てはいる、C++でのメンバ関数ポインタとthisポインタのペアの型のコンテナだ
一長一短。
0034デフォルトの名無しさん
2005/04/13(水) 13:34:08なんでそんな謎の操作が必要なのか非常に気になる
0035デフォルトの名無しさん
2005/04/13(水) 14:42:26struct HOGE {
int size; // この構造体とその後に続くデータの合計サイズ
:
};
こんなのが連なったデータ列を操作しなきゃならんのです。
0036デフォルトの名無しさん
2005/04/13(水) 14:53:09ありがとうございます。
なんとなく理解できました。
0037デフォルトの名無しさん
2005/04/13(水) 16:30:40今いる研究室ではC++ですが、来年から違う研究室に移る予定です。
その研究室ではCを使ってるみたいです。
現在私はCもC++もその他のプログラムも未経験です。
Cから勉強すべきかC++から勉強すべきか迷ってます。
どっちから始めたほうがとっつきやすいでしょうか?
そしてお勧めの参考書などはあるでしょうか?
0038デフォルトの名無しさん
2005/04/13(水) 16:38:560039デフォルトの名無しさん
2005/04/13(水) 16:51:130040デフォルトの名無しさん
2005/04/13(水) 17:07:31一杯ありすぎてよく分かりません。どなたかこれを入れたらいいよっていうの無いでしょうか。
0041デフォルトの名無しさん
2005/04/13(水) 17:13:34Debian Linux + gcc + Emacsを入れとけ。
0042デフォルトの名無しさん
2005/04/13(水) 17:20:350043デフォルトの名無しさん
2005/04/13(水) 17:21:040044デフォルトの名無しさん
2005/04/13(水) 17:22:35別になんだっていいよ、kernel2.4以上を採用しているLinuxなら。
Fedora coreでもいいし。
0045デフォルトの名無しさん
2005/04/13(水) 17:26:140046デフォルトの名無しさん
2005/04/13(水) 17:27:54004737
2005/04/13(水) 17:42:16結局、先にC++学んでおいて、
研究室変わる頃にCの勉強始めればおkですか?
0048デフォルトの名無しさん
2005/04/13(水) 17:43:52研究室変わる頃に、その研究室でもC++に移行しているかも知らん。
0049デフォルトの名無しさん
2005/04/13(水) 17:52:56あのさ、君、プログラミングする研究室は辞めた方がいいわ。
どうもスキルも無さそうだし、興味も無さそうだし、どうかんがえてもうまくやっていけないな。
0050デフォルトの名無しさん
2005/04/13(水) 17:56:20005137
2005/04/13(水) 18:16:12その後やりたい研究分野を扱っている研究室でCが必須である事を知り
そのため計算物理のためにCかC++を勉強しないといけなくなった。
そういうことで今度は挫折は許されないわけです。
まぁここで叩かれようと頑張りますとも。
アドバイスくれた方ありがとうございました。
0052デフォルトの名無しさん
2005/04/13(水) 18:41:510053デフォルトの名無しさん
2005/04/13(水) 19:01:00今学生なんだっけ?
http://www.amazon.co.jp/exec/obidos/ASIN/B0002ERS18/250-6079416-1867423
↑コレ買っておけば?3800円で統合開発環境手に入るわけだし。学生の特権だと思うけど。
0054デフォルトの名無しさん
2005/04/13(水) 19:16:270055デフォルトの名無しさん
2005/04/13(水) 19:18:490056デフォルトの名無しさん
2005/04/13(水) 19:22:220057デフォルトの名無しさん
2005/04/13(水) 19:39:530058デフォルトの名無しさん
2005/04/13(水) 20:34:100059デフォルトの名無しさん
2005/04/13(水) 20:39:05VCユーザもしない。(VCユーザは普通の人ではなく、厨房なので当てにはならないが。)
0060デフォルトの名無しさん
2005/04/13(水) 20:43:12とりあえずcygwinでもつっこんどけば?
0061デフォルトの名無しさん
2005/04/13(水) 21:00:00懐が痛むのは質問者であってこっちじゃねーし。
0062デフォルトの名無しさん
2005/04/13(水) 21:12:28「コンソールで色出したいんですが・・」
とかアホな質問がくるけどな
0063デフォルトの名無しさん
2005/04/13(水) 23:57:57{
const char* p = "Hoge";
return p;
}
hoge()から帰ってくるポインタを使って
文字を表示したりするのは違法ですか?
0064デフォルトの名無しさん
2005/04/14(木) 00:07:54合法だけど
return "Hoge";
でいいやん。
0065デフォルトの名無しさん
2005/04/14(木) 00:08:41合法
0066デフォルトの名無しさん
2005/04/14(木) 00:11:47どうせなら
inline const char * hoge() {return "Hoge";}
で。
0067デフォルトの名無しさん
2005/04/14(木) 01:53:17それが合法なのは、プログラム領域に確保された
文字列定数"Hoge"へのポインタを返してるからだ。
const char* hoge()
{
const char p[5] = "Hoge";
return p;
}
こんな感じの実装は文句なしに違法。
0068デフォルトの名無しさん
2005/04/14(木) 01:56:340069デフォルトの名無しさん
2005/04/14(木) 01:58:210070デフォルトの名無しさん
2005/04/14(木) 02:06:57そこでマジックナンバーを書いている辺りが情けない。
0071デフォルトの名無しさん
2005/04/14(木) 02:38:20頭悪いか、経験が無いってすぐわかる。
0072デフォルトの名無しさん
2005/04/14(木) 08:04:250073デフォルトの名無しさん
2005/04/14(木) 09:53:01char buffer[ 1024 ];
...
strcpy( buffer, "Hoge" );
...
char* p = strstr( buffer, "Hoge" );
return p;
0074デフォルトの名無しさん
2005/04/14(木) 10:26:06> return p;
あり得ねえ
あり得るって言う香具師はプログラムするな
0075デフォルトの名無しさん
2005/04/14(木) 10:34:260076デフォルトの名無しさん
2005/04/14(木) 10:40:04オチは 67 と同じ。
0077デフォルトの名無しさん
2005/04/14(木) 11:51:35いまさらだがアドバイス。
言語なんかどうでもいいんだよ。どうせどれも文法がちょっとずつ違うだけだろ。
わかんなくなったらネットにいくらでも資料が転がっている。
必要なのは、プログラムを作るための考え方。それが身についてないと
どんな言語を使ってもろくに動かない糞ソースを生み出すだけ。
0078デフォルトの名無しさん
2005/04/14(木) 17:15:59それだと最大64KBまでしかメモリを割り当てれない気がするんですが、
それ以上割り当てるにはどうしたら良いのでしょう?
0079デフォルトの名無しさん
2005/04/14(木) 17:20:38MS-DOS?
0080デフォルトの名無しさん
2005/04/14(木) 17:26:16はいそうです
諸事情でWinAPIは使えません
コンパイラはBCC5.5です
0081デフォルトの名無しさん
2005/04/14(木) 17:28:14BCC 5.5ってWin32アプリしか作れないだろ。
DOSアプリとコンソールアプリを勘違いしていないか?
0082デフォルトの名無しさん
2005/04/14(木) 17:30:13OSはWinXPです・・
0083デフォルトの名無しさん
2005/04/14(木) 17:37:270084デフォルトの名無しさん
2005/04/14(木) 17:39:590085デフォルトの名無しさん
2005/04/14(木) 17:40:17Win32アプリケーションの場合もある。BCC 5.5自体もそうだし。
main()から始まるプログラムでもCreateWindowはできるし、
逆にWinMainからでもRead/WriteConsoleでコマンドプロンプトを使う入出力ができる。
とりあえずprintf("%u", sizeof (size_t));をやってみろ。
reallocの2番目の引数はsize_t。大抵unsigned intのtypedefだが。
0086デフォルトの名無しさん
2005/04/14(木) 17:44:13ありがとうございます。
4って出ました。
unsigned longなんですね。
0087デフォルトの名無しさん
2005/04/14(木) 17:45:31unsigned intの最大値を調べてから質問し直してください。
0088デフォルトの名無しさん
2005/04/14(木) 17:45:59ってやってみろ。
0089デフォルトの名無しさん
2005/04/14(木) 17:47:24Win32ではint/unsigned intも32bit化されて4Byteになっている。
0090デフォルトの名無しさん
2005/04/14(木) 17:50:09そ、そうだったんですか・・・詳しい情報感謝します
0091デフォルトの名無しさん
2005/04/14(木) 17:55:26ただしアプリケーション(1プロセス)が使用できるアドレス空間は2GB。
2GB以上(〜4GBの)メモリを確保するのは難しい。
0092デフォルトの名無しさん
2005/04/14(木) 17:55:520093デフォルトの名無しさん
2005/04/14(木) 19:05:070094デフォルトの名無しさん
2005/04/14(木) 19:16:50http://www.marbacka.net/asm64/arkiv/64bit_addressing.html
0095デフォルトの名無しさん
2005/04/14(木) 19:31:15struct stack_type{
intdata;
struct stack_type *p;
};
struct stack_type *talloc(void);
int main(void)
{
printf("******");
struct stack_type *stack, *temp;
stack = talloc();
stack->p = 0;
while(1){
scanf("%d", stack->data);
temp = stack;
stack = talloc();
stack->p = temp;
}
return 0;
}
struct stack_type *talloc(void)
{
return (struct stack_type *)talloc(sizeof(struct stack_type));
}
以上のようなプログラムで、「構文エラー : ';' が 'type' の前に必要です。」
というエラーが出ます。場所はmain関数の中で一番最初に宣言している、
struct stack_type *stack, *temp;です。
009695
2005/04/14(木) 19:32:41これの意味がわかりません。
ちなみに直前のprintfをはずすとなぜかコンパイルエラーも起こらずに、
実行されてしまいます。
どの部分が影響されてこのようなエラーが出るのでしょうか?
0097デフォルトの名無しさん
2005/04/14(木) 19:41:25009896
2005/04/14(木) 19:43:47最初は書いていなかったんです。
しかし、コンパイラがエラーをはかずに実行まで行ってしまい、
その後のwhileループも実行されずに無事に?終わってしまいました。
そのため、printfを追加したら、上記のようなエラーが帰ってきました。
0099デフォルトの名無しさん
2005/04/14(木) 19:48:51途中に書けるようになったのはC++からだっけ?
0100デフォルトの名無しさん
2005/04/14(木) 19:48:54変数宣言より前に普通の文を書いてはいけない。
対策はC99対応コンパイラを使う、もしくはC++としてコンパイルするなど。
010196
2005/04/14(木) 19:50:02そうだったんですか!
ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています