- 1 名前:デフォルトの名無しさん [2008/07/27(日) 10:47:14 ]
- int i = 10;
int * p = &i;//int型ポインタpにiのアドレスを代入する 簡単。 char str1[] = "abcde"; char * str2 = "abcde"; 上と下は同じでどっちを使ってもいい。
- 237 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 12:59:42 ]
- >>236
すまんが何をいってるのかさっぱりだ バッググラウンドを簡単に説明してくれないか ○○と言う本やコンパイラのマニュアルに書いてあった、でもいいから
- 238 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:14:21 ]
- >>237
「世間には色んなコンパイラがある」ってこと。
- 239 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:18:31 ]
- char s[] = "abcde";
ポインタ経由だと、これに書き込めない環境があるってこと? ないだろ。
- 240 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:21:27 ]
- >>239
最適化されてなければな。 だからおまいの脳内環境だけで結論出すなよw
- 241 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:23:08 ]
- 最適化されたからって、書き込めなくなるのはおかしいだろ。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:23:55 ]
- ないってのは言いすぎだな。
ウンコな処理系ってよくあるから。
- 243 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:26:29 ]
- 処理系じゃなくって、コンパイラの問題なの。
- 244 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:37:36 ]
- 「処理系」ってコンパイラも含んでるだろ。ふつー。
- 245 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:39:58 ]
- ああ、分野が違うとこうも話が噛み合ないという見本だな。
- 246 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:44:29 ]
- 知ったかでしゃべってるのを「分野の違い」にすんなよ。
>>239 が、ポインタ経由だと書き込めないってどんな処理系だよ。
- 247 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:50:24 ]
- >>246
だからさ、世の中には色んなコンパイラがあって、色んな環境で色んなCPUが色んな場所で動いてるわけよ。 その全部のローカルな俺様コンパイラ的な物では定数は全部固定データなワケよ。 特に初期化宣言以降どこに右辺に現れない変数も固定な訳よ。 わかる?
- 248 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:51:26 ]
- >>247
ああ、適正だ。 どこにも左辺に現れない変数な。
- 249 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:55:33 ]
- >>247
定数を書き込み禁止領域に置くコンパイラってこと? それごく普通のコンパイラじゃん 文字列リテラルを書き換えようとして落ちるのはANSI仕様上も問題ない 知ったか乙
- 250 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:55:43 ]
- どうやら今日は誤字が多いのでこの辺で消える。
- 251 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:56:24 ]
- というか日本語の上手な人か
言わんとすることはわかったよ
- 252 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:57:51 ]
- >>247
おたくの「分野」の、どのコンパイラでそういう最適化をするのか書けばいっぱつで終了する話題だろ。
- 253 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:59:13 ]
- >>249
だからさ、 char t[] = "abc"; t[0] = "0"; とかあれば、このtは書き換え出来る領域に"abc"をコピーしてくるけど、 char t[] = "abc"; char *p; p = &t[1]; *p = "0"; とかすると、落ちるとか普通にある訳よ。
- 254 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:02:56 ]
- まあ、コンパイラがANSIに沿ってないってオチなんてドコにでもあるわけで。
そんな事言ってちゃ、ここでマトモな議論が出来なくなるわけで。
- 255 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:05:55 ]
- >>253
落ちるどころかコンパイルすら通らないだろうな
- 256 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:06:21 ]
- >>253
ふつーにコンパイラのバグだよね。
- 257 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:08:52 ]
- >>256
そだね。
- 258 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 15:40:17 ]
- まぁ、組み込み系だろうな、そういうコンパイラがあるのは。
PICとかPICとか、あとはPICとか。
- 259 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:33:17 ]
- >>231
> パソコン上ではどちらも書き込めるが、 > ROM化環境などではどちらも固定される事がある。 知ったか乙 汎用OS下でも処理系によって違うんだよ。 そもそもANSI読んだのか?
- 260 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:37:03 ]
- >>258
PIC?あんなヘタレ石に組込みを代表されてたまるかいw
- 261 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:38:32 ]
- >>259
処理系によって異なるのに、ANSI読んでも意味無いだろw
- 262 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:47:22 ]
- >>261
規格で「パソコン上ではどちらも書き込める」ように定められてるかどうか、そうでないか確認するんだから、意味あるだろ。
- 263 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:48:28 ]
- >>262
ANSIにそんな但し書きあるなら見てみるワ
- 264 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:52:58 ]
- >>263
但し書きがないんなら「> パソコン上ではどちらも書き込めるが」ってのはウソってことか?
- 265 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:55:31 ]
- >>264
それはWindows上のVCの実際の動きから書いてるから嘘じゃないだろ。
- 266 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 17:05:00 ]
- >>265
べつに特定の環境の話はしてないだろ。 書き込める環境もあるし、書き込めないのもあるって話だから、>>231がウソってことになる。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 17:35:37 ]
- いつから汎用機がパソコンという名前になったんだろう? ? ?
- 268 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 18:15:05 ]
- そもそもこの流れで「パソコン」って表現は意味が無いだろ。
- 269 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 16:29:00 ]
- ポインタはヤバイぞ・・・
ポインタのポインタとか、 二次元配列のポインタを取る時に = の右がconstだったりすると左が酷いことになる まずそんなことはやらないとは思うけど
- 270 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 17:05:49 ]
- そんなことやってもまあコンパイル時に警告かエラーだけどな。
- 271 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:49:32 ]
- >>270
警告だったら無視する習慣があったら、実行時に死亡だね?
- 272 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 22:45:27 ]
- 警告って事は何かしら書き方間違えているわけで
無視しても問題ないものでもなるべく除去するよう心がけるべき
- 273 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 22:46:27 ]
- main関数の引数を使ってませんよ的な警告も無視しちゃだめですか
- 274 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 22:47:09 ]
- Visual C++で警告レベルW4にしてSTLを使ってみれば楽しいよ
- 275 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 23:13:45 ]
- >>273
int main()でいいじゃない。 argvだけ使って、argcは使っていないというのなら、int main(int, char** argv)で。
|

|