1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.50【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1204124447/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
29 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:41:35 ] >>24 Cが理解出来ればC++は根性で分かる クラス、派生、オーバーライド、演算子のオーバーライドとかね。 あんなもん構造体のラッパー STL、テンプレートは知らんでも何とかなる C++勉強中に.NetのC++をmanagedでやると 永遠に理解出来なくなると思われ。
30 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:52:45 ] >>29 こいつ初心者だな・・・
31 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:01:37 ] >>30 ・・・まじ??? 自称「C++得意です」なんですけど…
32 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:15:44 ] テンプレート自分で書くかはともかく、STL使わないC++ってもはや全く想像できないなぁ。 まあ、俺もCから移った直後は>>29 みたいなノリだったんだけどね。 「STL? なにそれおいしいの?」「テンプレート? つかわねーよhahaha!!」って。
33 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:17:07 ] STLとtemplateがないC++なんぞ使いたくない
34 名前:19 mailto:sage [2008/03/30(日) 19:19:15 ] わけわかめなエラーが出て困ってます。助けてください。 たとえば"error C2143: 構文エラー : ';' が '<cv-qualifer>' の前にありません"などです。 開発はVS2008で行っています。 class Map{ public: virtual const int (& getMap())[1000][1000] const = 0; }; class FirstBasement : public Map{ private: static const int floor[30][30]; public: // 地図の状態を返す virtual const int (& getMap())[30][30] const; }; const int (& FirstBasement::getMap())[30][30] const{ return FirstBasement::floor; }
35 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:23:11 ] >>34 constの位置が違う。 virtual const int (& getMap() const)[1000][1000] = 0;
36 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:28:29 ] typedef使ったりboost::multiarray使ったほうが可読性が高まると思うが
37 名前:19 mailto:sage [2008/03/30(日) 19:29:05 ] >> 35 うまくいきました。ありがとうございます。 ただ配列の大きさも同じでないとオーバーライドできないのですね。
38 名前:19 mailto:sage [2008/03/30(日) 19:31:08 ] >>36 boostはまだ知らないのですが、typedefはそうですね。 こういう時にこそ、使うべきですよね。勉強になります。
39 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:31:43 ] 自分は趣味でやってるだけだけどCで書こうとするとSTLないから倍の時間がかかるよ。 C使いこなせる人尊敬するわ
40 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:34:11 ] CとC++の中で最も優先して勉強するのはSTLと思う
41 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:37:08 ] >>37 配列型は要素数が違えば別の型。 型が違えばオーバーライドにならない。 戻り型と違う型はreturnできない。 なんだか難儀しそうだね。
42 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:39:30 ] 34なんて全然分からんw強引にキャストする所だったw 配列はついついポインタにキャストするからなぁ >>39 Cだとクラス間の上下関係無いから、いつでもどこでも呼び出せて楽じゃない? メンバにstaticつけた瞬間に敗北した気がする。 classやらの基本構文書いて15分、とかイライラする。 Cならいきなり呼び出せるのに、て思うとね〜 というか、Cから入ってC++使う機会が少なかったから 脳内でクラス構造が上手に作れないらしいw STLよりANSIライブラリの方が手軽で使い易いし覚え易いし・・・
43 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:08:44 ] >>42 ウン百万行ってソースを担当すりゃわかるようになる。 >いつでもどこでも呼び出せて楽 楽だからスパゲッティーが生まれやすくなる。
44 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:17:50 ] そうだな。設計とは制限することだと言うし。
45 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:26:15 ] 厳密にアクセスの流れを制限することが売りというか オブジェクト指向のキモというか 従来どおりにやろうとするなら単なるオーバーヘッドの増加でしかないようなw
46 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:27:16 ] まぁ趣味でやる程度の規模ならCでも全然問題ない気がする
47 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:30:07 ] 29=42は超初心者
48 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:39:37 ] string("hagehage"); って、Cスタイルキャストですか?コンストラクタ呼んだことになってますか?
49 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:41:57 ] >>42 いつでもどこでも呼び出せるようにして、良いんじゃない? 俺は良いと思うよ。STLは使うことを進めるけど。 オブジェクト指向もC++で扱えるパラダイムの一つに過ぎないからね。 ラムダ万歳。
50 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:42:48 ] >>48 コンストラクタ。
51 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:47:59 ] >>50 ありがとうございます。 いままで static_cast<string>("hagehage"); って書いてたんですが、今度から>>48 ですませることにします。
52 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:59:35 ] >>51 状況によるだろうけど、それ書く機会少なくない? 明示しなくても変換(コンストラクタが選択)されるよ。 void f(const std::string& s); f("aaa"); //OK std::string s = "aaa"; //OK
53 名前:25 mailto:sage [2008/03/30(日) 21:03:40 ] >>19 ゴメン、constの付け所を間違えた。 やはりあれだな、>20が真実を語っていたな。
54 名前:デフォルトの名無しさん [2008/03/30(日) 21:07:04 ] 下の"移動アルゴリズム", "移動可能かチェック"で以下のようなエラーが出るんですが 何が悪いのでしょうか。 エラー 1 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 2 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 3 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 21 RPG エラー 4 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 21 RPG #include "Map.h" #include "EDirection.h" #include "DxLib.h" namespace hogehoge{ class MoveStrategy{ public: // 仮想デストラクタ virtual ~MoveStrategy(); // 移動アルゴリズム virtual EDirection Move(const Map& map) const = 0; protected: // 移動可能かチェック virtual bool IsMovable(const Map& map, const int& direction) const; }; }
55 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:09:35 ] >>52 えっと、メンバのreplace使う時とかで、リテラルの長さがほしくてstringに入れる場合、つまり str.replace(str.find("あ"),(string("あ")).length(),string("い")); こういう場面とか、文字列を+でつないでいく、たとえば str = "my name is " + name + "\n"; // エラー str = string("my name is") + name + string("\n"); こういう場面みたいな時です。
56 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:19:20 ] >>54 Mapが定義されて無いんじゃね? >>55 それならおk。
57 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:26:00 ] >>55 見逃してた。stringへの+も明示する必要ないから string("\n") は "\n" だけで良いよ。 str = string() + "my name is" + name + "\n"; でもおk。
58 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:27:50 ] >>56 ありがとうございます。解決しました。 確かにMapがおかしかったです。 原因はMapで純粋仮想関数ではなく、ただの仮想関数を宣言していただけなのに その定義を持っていなかったことでした。
59 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:36:52 ] >>57 >str = string() + "my name is" + name + "\n"; わーお(`・ω・´)いろいろありがとうございます。
60 名前:超初心者29=42 mailto:sage [2008/03/30(日) 21:39:35 ] >>43 ン百万行・・・ いいとこ10万行ぐらいだな、触ってたのは ン百万のソースを触るなんてオープン系の人?(´・ω・`)?? PCアプリでン百万行たって、 モジュール化進んでるからン百万だろうが怖くないしな 名前空間なんかイラネの世界で生きて来たからな〜w Cだとヘッダ単位でモジュール化したりするモンだが。。 規模が違うんだろうな〜〜。。。。
61 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:45:24 ] モジュール化?なにそれ?なスパゲッティコードを君にプレゼントしよう
62 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:49:29 ] 規模が大きくなってくると、人員の質にバラ付きがでてくるのさ
63 名前:54 [2008/03/30(日) 21:50:15 ] ちょっと教えてください。 以下のようなクラス宣言があります。 #include "Player.h" #include "Enemy.h" #include "Map.h" #include <vector> namespace hogehoge{ /********************************** * 概要: 地図の振る舞いを管理する * **********************************/ class Map{ public: static const int CHIP_SIZE = 15; protected: Player* player; //std::vector<Enemy> *enemy; public: // コンストラクタ Map(); //仮想デストラクタ virtual ~Map(); // 地図を表示する virtual void Display() const = 0; // 地下1階への状態を返す virtual const int (& getMap() const)[30][30] = 0; }; }
64 名前:54 [2008/03/30(日) 21:51:09 ] この場合以下のエラーが大量に出てしまいます。 エラー 1 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません d:\root\gamecreation\rpg\movestrategy.h 17 RPG エラー 2 error C2143: 構文エラー : ',' が '&' の前にありません。 d:\root\gamecreation\rpg\movestrategy.h 17 RPG ここから#include "Enemy.h"を取ると、エラーなくコンパイルできます。 Enemy.hは以下のようになっています。 #include "Map.h" #include "EDirection.h" #include "DxLib.h" namespace hogehoge{ class MoveStrategy{ public: // 仮想デストラクタ virtual ~MoveStrategy(); // 移動アルゴリズム virtual EDirection Move(const Map& map) const = 0; protected: // 移動可能かチェック virtual bool IsMovable(const Map& map, const int& direction) const; }; } 上のエラーはどういう意味なのでしょうか。
65 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:52:20 ] >>60 同じ同じ。 言語のサポートが優位な点だけど、 大枠でのプログラム層なアーキテクチャはC,C++で左右されないと思うよ。
66 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:01:25 ] >>54 >型指定子がありません - int と仮定しました コンパイラ:「const Map」がよく分からないので、「const int Map」だと考えますね >',' が '&' の前にありません コンパイラ:「const int Map&」、なんか変数名のあとに「&」が出て来たんですけど
67 名前:66 mailto:sage [2008/03/30(日) 22:04:46 ] 一応補足。 2つ目のエラーは、1つ目の仮定のせいで発生してるってことね。
68 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:07:33 ] >>66 Map ってクラスが入れ子になってるからじゃないの? ヘッダの相互参照になってる enemy.h の頭に class Map; ての入れてコンパイル通らない? もしくは cpp 内のみにヘッダ参照宣言入れて、ヘッダ内からの include やめるとか MS VC ならエラー行間違えない筈なんだけどな すげー適当に答えてるけどw >>61 >>62 共同作業でのプログラミング経験ほとんど無いんで〜 他人の綺麗なコードをスパゲティにした事なら何度もあります。未だバレてませんヨ、HAHAHA
69 名前:54 mailto:sage [2008/03/30(日) 22:18:50 ] >> 66, 68 ありがとうございます。 class Map; class MoveStrategy{ }; class Map; class Enemy{ }; とすると、エラーはごっそり減ったのですが、まだ以下のようなエラーが残ります。 エラー 1 error C2061: 構文エラー : 識別子 'MoveStrategy' d:\root\gamecreation\rpg\enemy.h 16 RPG ヘッダの相互参照というのは #ifndef をしていたら、必ず防げるものではないのですか?
70 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:28:30 ] class A{ B b; }; class B{ A a; }; 要はこれと同じ状態。前方宣言でも回避できない。これも class A{ A a; }; という問題に帰着できるから分かるだろ
71 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:32:18 ] >>69 無理かと #include "map.h" #include "Enemy.h" の2行は次の形に展開される class Map { ... void ( Enemy *pEnemy ); <= ★注意★class Map 宣言より上に class Enemy 宣言が無い } この時点でコンパイラは class Enemy の情報を持たないのでエラー class Enemy { ... void ( Map *pMap ); } となり、エラー だから #include が展開された時に Enemy.cpp : class Map; class Enemy { ... void ( Map *pMap ); } Map.cpp : class Enemy; class Map { ... void ( Enemy pEnemy ); } にするのが手っ取り早い VC 使ってるなら #pragma once 使った方がコードスッキリするよ
72 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:32:45 ] ゲームのように扱うデータが多かったりすると 必然的にコード量は増えるし、オブジェクト指向も取り入れるんだろう。 制御屋だとシステムの大きさに比例してでかくなるけど 担当も細分化されて、一人で担当するところはそれほどでもないね。 安全に関わるから。
73 名前:29=42超初心者 mailto:sage [2008/03/30(日) 22:40:43 ] >>72 エミュレータ使ってもバグ取れないなんてザラだからねぇ・・・ ブレークポイント張りずらいし 組込み系だとC++コンパイラが無いこと多い ミドルウェアでC以外のもの見た事ないし。 linuxのほとんどのコアソースがCでなのも傍証してる(ソースが古いのも一因) gccだけはブレークかけても、どこがバグなのかさっぱり分からん(´・ω・`;;;) モジュール化の概念はドコ行っても同じかも
74 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:42:58 ] 最近は組み込みもC++にシフトしてるよ 例外とかメモリ確保とか制限は多いけど
75 名前:54 mailto:sage [2008/03/30(日) 22:43:31 ] >>70 , 71 一応上のエラーは,これも class MoveStrategy; を追加することで消えました。 有益な情報ありがとうございます。 この問題に関して不案内なところがあるので、もう少し勉強してみます。
76 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:51:40 ] >C++コンパイラが無いこと そこでcfrontですよ
77 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:06:52 ] 日立のやつはC++使えるよね PCみたいにはいかないけど。
78 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:17:00 ] 組込みでmallocに頼るのがどうも・・・ 1週間後にフリーズ>再起動したら直りました、で 原因がmallocじゃどうにもならないしな〜。 RAMの必要量が予想出来ないしなぁ。。。 C++の展開命令見ると何書いてあるか分からないしなぁ Cならまだしも。
79 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 23:49:40 ] Templateの諸機能が動的に実装してある
80 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:05:05 ] すみません。質問させて下さい。XP+VC++ 9.0です 【やりたいこと】 データファイルを読み込んで、ダイクストラ法を使って最短ルートを求める 【条件】 ノードは可変数個、コストは全て正の値、スタートノード及びゴールノードは dijkstra.exe -start_node -goal_node のようにプログラム開始時に与える。 【何が分からないのか】 可変数個のノードや、エッジがどのノードに向かって延びているか、 かかるコストはいくらか等のデータをどのようにデータファイルに格納するか、データファイルの構造決定。 データファイルの構造が決定したとして、どのように可変数個のデータを読み込むか、 どうやってデータの終わりを探すか。ファイルからデータを読み込んだとして、データの整合性を どのように検証するか。 分からないことばかりですが、誰かヒントだけでも教えて下さい。宜しくお願いします。
81 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:25:26 ] >>19 亀レスだけど、typedefするのも1つの手。 typedef int IA_5[5]; IA_5 array[3] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; // == array[3][5] IA_5* func(){ return array; } int main() { IA_5* p = func(); for(int i = 0; i < 3; ++i){ for(int j = 0; j < 5; ++j) cout << p[i][j] << " "; cout << endl; } return 0; }
82 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:37:54 ] >>80 可変個のデータ読み込みは、非常に基礎的で、ダイクストラ法と関係ないですよ それをまず出来るようになって下さい
83 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:38:58 ] >>80 C++でも良いんですか? もし良ければSTLを使ってノードを管理すると簡単と思います
84 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 06:57:59 ] >>82-83 レスありがとうございます。私の修行が足りないようで、お恥ずかしい限りです。 勉強して理解を深めてからもう一度出直してきます。スレ汚してすみませんでした。
85 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 07:23:05 ] すこし作ったよ #include <vector> #include <iostream> #include <set> using namespace std; class node { public: unsigned int dis,ver; node(){ ver=dis=-1;} node(unsigned int i, unsigned int d){ dis=d; ver=i; } bool operator < (const node &x) const { return (dis<x.dis); } }; typedef set<node> vertex; main(){ vector< vertex > g; //グラフの定義 g.push_back(vertex()); //頂点追加 g[0].insert(node(1,3)); //辺と距離の追加 g[0].insert(node(2,5)); g[0].insert(node(3,2)); vertex::iterator p=g[0].begin(); cout<<(p->ver); // 最も短い距離の頂点を出力 }
86 名前:デフォルトの名無しさん [2008/03/31(月) 11:15:09 ] VC++2008EEで勉強中なのですが、 いろんなサイトの見よう見まねで下記ソースを試してみたところ ビルドして一瞬ウィンドウが出て終わってしまいます。 これはreturn 0のせいかと思って、return 0を消しても やはり一瞬で終わってしまいます。 どうすれば終了しないでコマンドプロンプトのような画面で 文字が確認できるようになるのでしょうか。 #include <iostream> int main(void){ using std::cout; using std::endl; int a; int &alias = a; alias = 100; cout << "a = " << a <<endl; cout << "alias = " << alias <<endl; return 0; }
87 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:32:42 ] getchar(); return 0;
88 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:41:03 ] >>87 ありがとうございます!ようやく確認できるようになりました。 キーボード入力待機状態にして止めるんですね。 勉強になりました。
89 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:41:05 ] Ctrl + F5
90 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:45:24 ] >>89 デバッグなしでビルドというのでも止まるんですね。 ありがとうございます。 C言語はいろいろ解らないことばかりで非常に助かります。
91 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:48:00 ] >>86 コマンドプロンプトで実行するか、>>87
92 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:04:44 ] >>90 それらはCの知識ではない。Windowsの使い方の知識とVisualStudioの使い方の知識だ。
93 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:36:21 ] >>84 Boostのグラフライブラリを使う
94 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:10:05 ] builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm ポインタの勉強をしているのですがサンプルのコードを動かしてみたところうまくいきません
95 名前:デフォルトの名無しさん [2008/03/31(月) 14:13:24 ] もうアパートを探すのはつかれたよ。 はやくプログラミングしたいよ。
96 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:20:17 ] >>94 コメント欄がすごいことにw
97 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:23:25 ] >>94 もうこの人終わりだなw
98 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:28:30 ] int *n; *n = 5; /* ポインタ変数nに値5を代入 */ 初期化もポイントする先も決めてないポインタをそのまま使うのって非常に不味いよねぇ 自分ははじめにポインタの初期化を必ずするよう教わったがなぁ
99 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:40:39 ] >>96 >>97 あー、前スレで話題になった奴か。 エピステーメーにまで指摘されていたのに未だに記事の修正が入らないのね。 編集がコメントなにやらゴミを書いているけどそんなものは記事の修正とは認められないし。 この程度のコメントじゃZDNETとしても著者としても痛くも痒くもないのでしょ。
100 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:46:23 ] >>99 もしや本人さま(えぴさん)で?
101 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:48:48 ] どうなるか、サンプルソースをコンパイルして実行してみたら思った通り以上終了w フォールト ->00401007 c70005000000 mov dword ptr [eax],0x5 ds:0023:00000001=???????? だってさ。 *n = 5: の部分かな。エラーがソース乗せちゃまずいでしょw
102 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:49:42 ] × エラーがソース乗せちゃまずいでしょw ○ エラーがでるソース乗せちゃまずいでしょw
103 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:54:00 ] >>101 コンパイラにもよるんじゃね? いや、試してないけど
104 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:55:06 ] 見てないけどエラーを修正しなさいって問題なんだろ
105 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:56:59 ] あんまり往生際悪いんで吹いたww
106 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:57:20 ] 「動くけど危険」とかいう話じゃなくて「動かない」コードだろ、これは
107 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:59:25 ] >>101 必ずしも 異常 終了するとは限らない ポインタの指す先による >>106 場合によっては動くコード
108 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:03:01 ] 最適化をオフにして次のコードを実行すると… 勘弁してほしいタイプのバグ #include<stdio.h> void hoge(void){ static int a=5; int *n=&a; printf("a=%d\n", a); } void huga(void){ int *n; *n=100; } int main(void){ hoge(); huga(); hoge(); return 0; }
109 名前:99 mailto:sage [2008/03/31(月) 15:13:55 ] >>101 落ち着け。「以上終了」になっているぞw >>100 勘弁してくれ。一緒にされたらそれはそれで迷惑だ。 もし私がエピたんなら、自分のブログでネタにしているよ。 いや、それだと本人が書いていたら拙いな。 ……と思って検索したら、やっぱり書いていたかw で、ついでにうろついたらまぁ、他にも釣れた罠。
110 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:21:40 ] επιστημηってプログラム系の掲示板でよく見かけるけどなんの人なの?
111 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:30:11 ] 掲示板でよく見かけるヤツは偽者 自称C++のちょっと偉い人
112 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:31:34 ] C++の黎明期からC++に関わってきた人。 かといって、C++の隅から隅まで知っているわけではなくて、 Boostのコミッタというわけでもなくて、 意外に中途半端な立ち位置な気がするお人。 でも、俺より知識も経験もあるのは確実。
113 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:32:34 ] 魚拓とっておこうと思ったら既に3つも取られてたw
114 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:33:23 ] エイプリルフールは明日だ
115 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:36:26 ] なんか冒頭に追記が > 現在、本稿には技術的観点から異議が多数寄せられているため、詳細をレビュー中です。 > 初めてご覧になる方は、コメント欄もあわせてお読み下さい。 > また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。 そんな大層なレベルの話なのか…?
116 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:39:40 ] >現在、本稿には技術的な誤りが存在するため、詳細をレビュー中です。 >初めてご覧になる方は、コメント欄もあわせてお読み下さい。 >また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。 厳しくなったw
117 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:44:52 ] 初心者にとってポインタの概念ってそんなに躓きやすい物なのか? ポインタの基本的な部分で苦労したことがないのでそこら辺が不思議だ
118 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:45:30 ] >>94 おい。間違えて「記事推薦者になる」ってとこクリックしちまったぞ。 どうやって取り消すんだ。おい。教えろ。
119 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:50:36 ] >>117 昔教える立場にあったことがあるが、何でかしらんが分かる奴と分からん奴がいて、 分からん奴はいくら教えてもなかなか理解してくれん。 メモリってのがリニアな空間で位置や距離の概念があることを理解できないらしい。
120 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:55:35 ] 番地とか分かりやすいものに例えればいいんじゃね?
121 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:56:25 ] >>118 ワロヌ
122 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:00:32 ] >>117 俺もそうだけど、アセンブラから入ると、「ポインタが分からない」と言う人がどう分からないのか分からない 新人に教えるときなんかにとても苦労する
123 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:07:17 ] 変数:戸棚 値:ケーキ ポインタ:「戸棚にケーキがあります」という母ちゃんの置き手紙
124 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:09:03 ] >>123 訳わからんw
125 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:17:56 ] >>123 戸棚の場所が書いてあるメモ、なんじゃね?
126 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:25:27 ] 変数: 箱や器のようなもの 値: 箱にいれる何か ポインタ: 箱が置いてある場所を書いてあるメモ みたいな解釈でいいんだろうか? ポインタを正しく理解できてるか自分でもよくわからん。
127 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:25:38 ] ケーキを食った後置き手紙を始末しないと後の人が迷惑するという話か
128 名前:99 mailto:sage [2008/03/31(月) 16:31:08 ] いや、置き手紙はそのままで戸棚に「中身は俺の腹の中」って書いておくんだろ。
129 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 16:38:46 ] JAVAの本を書いている人みたいだけど、 これほどポインタの概念がわかってなくても 使えるのか、JAVAって。 ある意味うらやましいかも。