C言語なら、俺に聞け! <11>
■ このスレッドは過去ログ倉庫に格納されています
0571デフォルトの名無しさん
NGNG{
char *a="abcdefg";
return a;
}
int main(void)
{
printf("%s\n",f());
return 0;
}
これなんですが
コンパイラはエラーにならず通りました。
局所変数のアドレスを返すのはまずいと知っているんですが
定数は大丈夫なんでしょうか?
290デフォルトの名無しさん sage 02/01/17 20:41>>289
問題ない。
char a[]="abcdefg";
return a;
だとまずいが。
ただ、文字列定数はconst char*にした方が良いと思われ。
const char* f(void)
{
const char *a="abcdefg";
return a;
}
294デフォルトの名無しさん sage 02/01/17 20:55>char a[]="abcdefg";
>return a;
>だとまずいが。
何故ですか?
295デフォルトの名無しさん sage 02/01/17 20:59ぞくにいう
宙ぶらりんのポインタ
296デフォルトの名無しさん sage 02/01/17 20:59>>294
次からは
C言語なら、俺に聞け! <11>
http://pc.2ch.net/test/read.cgi/tech/1009499565/
で聞け
それは ブロック内だけ有効な実体である aのアドレスをブロック外に返してるからだ
297デフォルトの名無しさん sage 02/01/17 21:00>>294それだと、局所変数のアドレスを返すから。
>>289は局所変数ではなく、文字列リテラルのアドレスを返してるから大丈夫。
■ このスレッドは過去ログ倉庫に格納されています