C言語なら俺に聞け 163 (966レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
142(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-hr+9) [sage] 2024/09/14(土) 13:40:20.14 ID:N2YvcTj50(5/14) AAS
>>141>>122122(2): デフォルトの名無しさん (JP 0H3e-voeu) [sage] 2024/09/13(金) 17:26:56.71 ID:HymUJJD5H(2/5) AAS
>>119
んなこたーない
char foo[] = "hoge";
char* bar = &foo[1]; /* 敢えてずらしてみる */
printf("bar -> %s\n", bar);
で中身は何度も参照されるぞ
gccで試してみたら敢えてずらしてポインターに代入されたとしても、レジスターに文字列を保持したままprintfに渡すというトリッキーなコードが生成されたw
スタックに文字列を書き込んでそのアドレスを渡してるっぽい
の bar が参照しているのは文字列リテラルからコピーされた配列であって文字列リテラルではない。
文字列リテラルが破棄されないこととは独立した話だよ。
143(1): デフォルトの名無しさん (ワッチョイ a6e1-865n) [sage] 2024/09/14(土) 13:43:47.04 ID:0gsw2riP0(4/12) AAS
>>142
barは配列のコピーじゃないだろ
ポインターなんだから
コピーしてるのはアドレス値だぞ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.041s