- 1 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:26:08 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.40【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1184717430/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 284 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 04:00:47 ]
- 演算子の優先順位についての注意。インクリメント(++)/デクリメント(-- --)演算子と間接参照演算子(*) の優先順位は、間接参照の方が低い。だから、
while(1){ sub( *++p ); } というコードは頻出するが、単独の文 *++p; は間接参照の文が無意味である。(ポインタpをインクリメントした後で、ポインタが示す値を参照し、値を捨てる) って言う文があるのですが、 「単独の文 *++p; は間接参照の文が無意味である。」 ってどう意味なのでしょうか? 実例を挙げていただけないでしょうか。
- 285 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 04:12:51 ]
- >>284
間接参照演算子「*」 間接参照はポインタの先を「*」で参照すること。 int main(){ int a=10; int *p=&a; *p; /* <- この文意味ないべ? */ return 0; }
- 286 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 05:07:32 ]
- ああ、そういう意味だったんですか。
分かりました。 自分、日本語読む力が無いなぁ。
- 287 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 05:31:19 ]
- >>284
これおかしいな。 ここで例としてあげるべきなのは *p++ であって *++p ではない。 そもそも * と 前置 ++/-- とは優先順位が同じだ。
- 288 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 07:12:56 ]
- >>284
内容がひどいのでさらしておこう。 www.nurs.or.jp/~sug/soft/tora/tora6.htm
- 289 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:09:10 ]
- >sub( *++p );
>というコードは頻出するが こらこら、副作用があるコードを関数呼び出しで書いちゃ遺憾。 もしこのサイトにあるように頻出するとしたら、よっぽど腐った環境だ。 つーか、このサイト管理者、頭大丈夫か? www.nurs.or.jp/~sug/soft/index.htm
- 290 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:21:09 ]
- 別に書いていいだろう。
未定義動作でもあるまいし。 コーディングスタイルの話としても、 宗教戦争になる程度のこうじゃないといけないとは言えない内容だな。
- 291 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:29:14 ]
- >>290
その「sub()がマクロだったら」と考えてみてくれ。 いつ仕様変更でそのようなことになっても大丈夫なように副作用を発生させないのは常識だ。
- 292 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:35:04 ]
- それだったら*++pではない場合にもいえてしまうんじゃないの?
マクロってなんなのかしらないけど
- 293 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:43:51 ]
- なんだ、ただのもの知らずか。たとえばこんなの。
#define sub(x) (x < 0 ? -x : x)
- 294 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:44:08 ]
- >>289
>こらこら、副作用があるコードを関数呼び出しで書いちゃ遺憾。 どいう意味?
- 295 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:56:22 ]
- >>293
なるほど、マクロって絶対値ってことか
- 296 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 08:58:23 ]
- そうだよ。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで
- 297 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:11:47 ]
- >>296
いや、違うでしょ?
- 298 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:12:45 ]
- >>297
そうだね。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで
- 299 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:14:25 ]
- 初心者歓迎とかスレタイにあるのに何やってるの
- 300 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:21:19 ]
- >>299
そうだね。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで
- 301 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:27:40 ]
- 恥ずかしいからってそんな連投しなくてもいいのに
- 302 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:30:09 ]
- あんああんあんああんあん
- 303 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:30:30 ]
- >>301
そうだね。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで
- 304 名前:292 mailto:sage [2007/08/15(水) 09:35:28 ]
- >>300,>>303
あなたの相手は僕でしょ?
- 305 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:36:37 ]
- >>304
そうだね。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで
- 306 名前:292 mailto:sage [2007/08/15(水) 09:38:05 ]
- マクロも知らなかった初心者に指摘されたのが悔しかったの?
プライドを傷つけてごめんね
- 307 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:42:16 ]
- マクロも知らない初心者の来る所じゃないんだ。
どれだけそいつに時間とレスを割く必要があるか分かるだろう? そんなレベルの低い奴が来ると釣りかと思う。
- 308 名前:292 mailto:sage [2007/08/15(水) 09:45:23 ]
- >>307
マクロ知らないとは書き添えたけど質問したわけではありません あなたの勇み足では?
- 309 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:49:39 ]
- >>306の言ってる指摘ってひょっとするとコレ?
>それだったら*++pではない場合にもいえてしまうんじゃないの? いくらなんでもマジとは思えん(だから>>293もスルーしたんだろう)。
- 310 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:50:25 ]
- >>308
みんな馬鹿で、お前だけが正しいことを言ってる。 誰もお前の頭の良さについていけなくて、悔しさのあまり暴れてるだけなんだよ。 だからママの所に行っておいで。
- 311 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:52:13 ]
- >>307
>どれだけそいつに時間とレスを割く必要があるか分かるだろう? って >そうだね。でもここは君の居る所じゃないんだ。そろそろママの所に行っておいで の事かwアホじゃね?
- 312 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:53:52 ]
- >>311
日本語でおk
- 313 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:53:59 ]
- >>311アホですね
- 314 名前:292 mailto:sage [2007/08/15(水) 09:55:13 ]
- >>309
>>293のこれだけのレスをみれば、意図的にスルーしているとはとても…
- 315 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:55:59 ]
- >>314
その辺が低脳。全て293のレスだと思ってやがる。
- 316 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:57:26 ]
- >>315
見苦しい言い訳
- 317 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 09:57:57 ]
- >>315
あああなたでしたかごめんなさいね
- 318 名前:307 mailto:sage [2007/08/15(水) 09:58:34 ]
- どうせ俺の事も>>293だと思って勇み足で回答したとでも言いたいんだろう?
マクロも知らない初心者の来る所じゃないんだと思っている奴が、 わざわざマクロも知らない初心者に答えるわけがないだろう。
- 319 名前:292 mailto:sage [2007/08/15(水) 09:58:49 ]
- >>317は僕です
しっかり名乗ります!
- 320 名前:292 mailto:sage [2007/08/15(水) 10:00:03 ]
- >>318
マクロくらいわかるよw フィーリングでね
- 321 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:00:14 ]
- どう見ても292の方が見苦しい言い訳。
バカなんだからバカにされたくらいでレス繰り返さなくてもいいのに
- 322 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:01:24 ]
- >>320
フィーリングで分かるなら空気くらい読めるだろ?
- 323 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:02:59 ]
- >>295はうまい荒らしだったな
- 324 名前:292 mailto:sage [2007/08/15(水) 10:03:36 ]
- あ、ずっと安価間違ってた
>>291さんでした
- 325 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:03:55 ]
- >>318
初心者に答えるわけがない なんてレスの無駄だから偉そうに宣言しなくてもいいよw 答えないんじゃなくて答えられないんだろ
- 326 名前:309 mailto:sage [2007/08/15(水) 10:16:16 ]
- 結局>>306の言ってる指摘ってのはコレな訳?
>それだったら*++pではない場合にもいえてしまうんじゃないの?
- 327 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:18:32 ]
- >>326
かもしれないけど、なにしろ何がどう「いえてしまう」のか まるでわからん文章だからなぁ。
- 328 名前:309 mailto:sage [2007/08/15(水) 10:19:46 ]
- >>326
意味わからんよなー
- 329 名前:309 mailto:sage [2007/08/15(水) 10:23:07 ]
- >>326
多分、>>289から続く >副作用があるコードを関数呼び出しで書いちゃ遺憾。 について言ってるんだと思う。
- 330 名前:329=309 mailto:sage [2007/08/15(水) 10:25:08 ]
- アンカーミス。>>327ね。
後、>>328誰だw
- 331 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:26:15 ]
- マクロに放り込むんだり引数の評価順に左右されるような場合はマズいけど
別にこのケースは何の問題も無いわな スタイルとして自分がそう心がけているというだけの話なら ご立派ですねで終わりだが 実にどうでもいい
- 332 名前:292 mailto:sage [2007/08/15(水) 10:26:21 ]
- 適切な日本語ではなかったけど、脳の衰え始めている先輩方には難しかったかな?
むしろ適切であったとしてもまともにこたえる気はなさそうにおもえる
- 333 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:27:23 ]
- 2chで煽るのだけが生き甲斐の厨房に
煽り返す厨房か
- 334 名前:309 mailto:sage [2007/08/15(水) 10:44:58 ]
- >>331
今は問題無いからいいって考えはどうかと思うぞ。後々の仕様変更に耐えられるコードを書く方がいい。 もっとも今回は副作用で問題が出るマクロにするのが一番悪いが。 >>332 >まともにこたえる気はなさそうにおもえる 何でそう思ったか知らんが結局質問は「副作用があるコードを関数呼び出しで書いちゃ遺憾って言ってるけど、それって*++pではない場合にもいえなくない?」って事か?
- 335 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 10:49:04 ]
- >>331
話題がループするが、sub()がマクロなら問題だからするべきではないという話だろ。 件のサイトではsub()が何か提示されていないのだから、問題がないとは言えない。
- 336 名前:292 mailto:sage [2007/08/15(水) 10:54:44 ]
- 皆さんの話がかみ合ってないかもしれないので整理しましょう
*++pってなんですか?
- 337 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 11:00:13 ]
- >>335
マクロにsub()なんて名前をつけてるのならそっちのが問題じゃね マクロは大文字で目立たせるのが基本だし subはサブルーチンのサブだろう ま、標準ライブラリの一部の関数はマクロで実装することも許されているけどな
- 338 名前:デフォルトの名無しさん [2007/08/15(水) 11:13:27 ]
- >>336
死ね
- 339 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 11:32:32 ]
- すみません、教えてください。
C++でコンテナからイテレータを取り出すときに、iterator とconst_iterator とを 区別するのはどうやっているんでしょうか? std::vector<>::iterator begin(); と std::vector<>::const_iterator begin() cons; のように、同じ関数でiterator を返したりconst_iterator を返したりしたいんですが、上手くいかない……
- 340 名前:339 mailto:sage [2007/08/15(水) 11:40:56 ]
- ごめん、忘れてください。超間抜けなこと聞いた。
暑くて頭がボケてたみたい……
- 341 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 11:42:17 ]
- while(1) sub( *++p );
で意味をなす単項subってどんなマクロ(関数)なんだろ
- 342 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 11:46:15 ]
- >>337
<*grep*>:319:crt/src/minmax.h:21:#define max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:333:crt/src/stdlib.h:166:#define __max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:340:crt/src/stdlib.h:472:#define max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:342:crt/src/v2tov3.h:71:#define max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:387:include/minmax.h:21:#define max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:399:include/stdlib.h:146:#define __max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:406:include/stdlib.h:424:#define max(a,b) (((a) > (b)) ? (a) : (b)) <*grep*>:603:PlatformSDK/Include/WinDef.h:177:#define max(a,b) (((a) > (b)) ? (a) : (b)) なるほど、標準ライブラリにないmax()系がこんなにあるとはM$は問題だらけだね。
- 343 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 11:48:41 ]
- >>341
きっとこんなのだよ。 #define sub(x) putchar(x)
- 344 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:04:17 ]
- >>342
そうだな。実際最悪だろ。
- 345 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:06:28 ]
- マクロは名前空間にもくるめないしなあ
- 346 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:08:02 ]
- >>342
実際、それが問題になることがあって、 min,maxを定義しないようにするための NOMINMAX というマクロが存在する
- 347 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:08:48 ]
- >>342
実際そのマクロの存在の為に、VC6の<algorithm>にはstd::max, std::minがない。 これはC++の移植性において、由々しき問題である。
- 348 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:10:11 ]
- まあVC6はそれ以前に色々ダメすぎだけどな
今となっては
- 349 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:10:29 ]
- >>342
Effective C++でも第1項でいきなり問題視してるじゃん。
- 350 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:41:16 ]
- Effective C++(笑)
- 351 名前:デフォルトの名無しさん [2007/08/15(水) 12:50:00 ]
- 質問です。
Windows Vista買ったら、Borland C++5.01のダイアログエデイタが正常に動作しません。 Xpマシンもありますがどうすればいいでしょうか? 1.プログラムはXpマシンで作成してコピーする。 2.ダイアログの部分だけXpマシンで作成してコピーする。 3.Vistaで動作する開発環境を買って移植する。
- 352 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 12:57:03 ]
- マルチ死ね
- 353 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:18:31 ]
- >>349
ttp://kamaitachi.blogdns.net/cgi-bin/izna/manage/img0351.jpg これか。別にそんなに問題視はしてないように見えるが。
- 354 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:21:04 ]
- 問題視しまくりじゃないか。
- 355 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:47:21 ]
- ここで言う「マクロと関数に名前の区別」というような点は問題視してない
- 356 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 14:56:09 ]
- 確かに>337が指摘しているような「大文字ではない」ことについてはなんら言及されていないね。
- 357 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 15:01:51 ]
- >>349は>>342宛なんだから、「ここで言う」はmaxマクロに対応させないと。
- 358 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 15:14:41 ]
- なるほど。確かにそっちはそうだな。
- 359 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:25:13 ]
- 今北産業。
>>284 > 「単独の文 > *++p; > は間接参照の文が無意味である。」 > ってどう意味なのでしょうか? > 実例を挙げていただけないでしょうか。 無意味でない例なら出せる。 volatile int* p; とか宣言されていて、p が実はメモリマップド I/O で読むだけでも意味がある場合がある。 >>293 > #define sub(x) (x < 0 ? -x : x) sub(a+b) とかでおかしくなるから >>342 みたいに () 使おう。
- 360 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:29:58 ]
- >>359
p が volatile int* であっても *++p; と書いて、pがdereferenceされることは保証されてないだろ。
- 361 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 19:14:24 ]
- >>360
すまん、よくわからんのだが「p が deference されることは保証されない」のは、特に *++p; に言える、と言ってる?それとも、 *p; でも同様だと言ってる?
- 362 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 19:24:20 ]
- >>360
とりあえず volatile な *p; については c0x.coding-guidelines.com/6.7.3.html の 1488-1489 辺りで「最適化で削除しちゃいかんよ」ってな事になってるが。 もっといえば volatile int x; x; でも一緒。
- 363 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:19:08 ]
- 更にいうと
const volatile int x; x; でも処理系は x の読み出しを削除してはいけないし、 x の値を何かに使う場合複数回の読み出しで同じ値だと仮定してもいけない。 この場合の const は「書き込めません」っていう意味だ。
- 364 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 07:37:42 ]
- char *p;
char *q; p = "hoge" + 1; q = "hoge"[1]; この場合pはoになることは正しいですよね。 pにはhのアドレスが代入される訳ですから。 んでqの場合は配列じゃないので、 char x[] = "hoge"; int r = x[1]; なら正しくrにはoが代入されますけれど、 q = "hoge"[1];とかいても警告は出ますし、 無意味な値が代入されるけれどもコンパイルはされてしまいます。 どうしてコンパイルエラーにならないんでしょうか?
- 365 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 07:55:01 ]
- "hoge" + 1
はポインタだが、 "hoge"[1] はポインタではない。
- 366 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:01:25 ]
- それは分かるんですけれども、
なんでコンパイル出来るのか? が疑問なんです。
- 367 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:04:43 ]
- >>364
char* p = 定数; ならわかる?
- 368 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:13:50 ]
- >>366
>pにはhのアドレスが代入される訳ですから。 間違い。
- 369 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:20:38 ]
- >>364
C言語だと、整数からポインタへの代入は警告止まりになる。 C++ だとエラーになる。
- 370 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:38:00 ]
- >>367,369
char* p = 定数; いや、もちろんポインタに数値をキャストしなくても 代入出来ることは知ってます。 q = "hoge"[1]; ってコンパイラはどういう風に解釈するんですか? >>368 >pにはhのアドレスが代入される訳ですから。 え、じゃ文字列の先頭のアドレスで正しいですか?
- 371 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:42:22 ]
- >>370
"hoge"+1なんだから、当然'o'ヘのポインタだ。
- 372 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:43:32 ]
- >>370
hのアドレス=文字列の先頭のアドレス 代入は+1が行われたあとだろ? だからすでにアドレスが変わってる
- 373 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:45:27 ]
- >>370
q = "hoge"[1]; と static const char x[] = "hoge"; q = x[1]; は大体同じ。
- 374 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 08:59:29 ]
- >>372
すいません、勘違いしてました。 >>371,373 えっと自分が聞きたいのは、 char *q = "hoge"[1]; という文がなぜコンパイル出来るかってことなんです。 char q [] ="hoge"; char *p = "hoge"; はあきらかに違うのに char *q = "hoge"[1]; がコンパイル出来るとまるでこの二つが同じように錯覚してしまって 間違いの元になるんじゃないかって思ったんです。 んで、そういう事が出来るのはきっと何か理由があるに違いないと思ったんです。
- 375 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:05:40 ]
- 特に理由はない。
文法上問題がないから警告止まりでコンパイルされるだけ。
- 376 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:08:16 ]
- > char q [] ="hoge";
> char *p = "hoge"; > はあきらかに違うのに > char *q = "hoge"[1]; > がコンパイル出来るとまるでこの二つが同じように錯覚してしまって > 間違いの元になるんじゃないかって思ったんです。 なぜ二つが同じように錯覚するの?
- 377 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:27:30 ]
- >>375
ほんとだ。 char *x = "hoge"; p = x[1]; がコンパイル出来る。 x 0x85fd8 p 0x6f pのアドレスってどこから出てきたんだろう?
- 378 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:28:33 ]
- >>374
= の右辺に書かれた T 型の文字リテラルは T 型の static 配列と同じです = の右辺に書かれた T 型の配列は T 型の配列の先頭要素を指す「Tのポインタ型」になります 理由としてはっつーか便利だし〜みたいな?
- 379 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:31:29 ]
- >>377
'o' に決まってるだろう。
- 380 名前:デフォルトの名無しさん mailto:とか言ったらまた食い付いてくるかな?sage [2007/08/16(木) 09:36:05 ]
- >>377
m9(^Д^)プギャー
- 381 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 09:39:47 ]
- >>377
一応言っておくけど0x6fはアドレスじゃないよ 'o'に対応するアスキーコード c-production.com/special/03090704.html
- 382 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 10:00:58 ]
- qはそれ自身が配列であり、右辺の"hoge"はコンパイラに対する
初期化内容としてのみ解釈される。定数"hoge"は実行時には存在しない。 pの場合、実行時に定数"hoge"をメモリ上に用意して、そのポインタを利用する。 なので同じように見えても右辺の意味がまったく違う。 もともとqは以下のように記述すべきものだったんだろうけど、 char q[] = {'h', o'', g'', 'e', '\0'}; 不便なので、利便性のために char q[] = "hoge"; という書き方も受け入れるようになっただけ。 結果的にpとqの右辺が似ているけど、たまたま。
- 383 名前:デフォルトの名無しさん [2007/08/16(木) 10:07:36 ]
- *p = "hooge"
p[] = "hooge" は同じだろ
- 384 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 10:11:42 ]
- >>383
本気で言ってるのか
|

|