[過去ログ] Visual Studio 2017 Part5 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
156
(2): デフォルトの名無しさん (ワッチョイ 5306-AQ07) [sage] 2018/03/18(日) 06:49:18 ID:Pb4lbiqE0(1) AAS
>>155
155(1): デフォルトの名無しさん (ワッチョイ f3b3-opPu) [sage] 2018/03/18(日) 04:43:06 ID:vTP8CpkY0(4/4) AAS
>>144
char *a = "foo"; って書くと、>>150>>151>>154のように、aに書き換え不可領域の"foo"のアドレスが代入されます
char a[] = "foo"; って書くと、書き換え不可領域の"foo"のサイズ(4バイト)を計算、書き換え可能領域にメモリを確保、"foo"をコピー、そのアドレスがaに代入されます
まあこれが回答なんだけど、これは今はそうであるだけで昔は実行できたよね。
言語仕様としてどこかで定義されたのだろうか?
コンパイルエラーにもならないところを見ると、未だに言語仕様にはなっておらず暗黙の了解なんだろうか?
157: デフォルトの名無しさん (ドコグロ MM03-tgc5) [sage] 2018/03/18(日) 08:28:41 ID:Vy5WxvpvM(1) AAS
>>156
> 言語仕様としてどこかで定義されたのだろうか?
未定義って定義されてたはず
ちなみに未定義動作なので
> 昔は実行できた
> コンパイルエラーにもならない
等々は全て正しい挙動
もちろん
・実行時エラーになる
・コンパイル時エラーになる
等々も正しい
158: デフォルトの名無しさん (ワッチョイ a3e2-hKdO) [sage] 2018/03/18(日) 08:41:22 ID:EbHOfvBT0(1/3) AAS
>>156
昔は実行できた? ちげーよ
static char a[] = "foo";
昔はこう書かなきゃコンパイルエラーだった
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.048s