【发布时间】:2011-05-12 17:27:16
【问题描述】:
假设一个返回固定“随机文本”字符串的函数写成这样
char *Function1()
{
return “Some text”;
}
如果程序不小心试图改变doing的值,那么程序可能会崩溃
Function1()[1]=’a’;
函数调用之后的方括号是什么,试图这样做会导致程序崩溃?如果您熟悉这一点,任何解释将不胜感激!
【问题讨论】:
-
[1] 指向字符串中的第二个字符([0] 将是第一个)
-
为什么标题里写着C++,却把问题标记为C?
-
您应该将其标记为 MSVC,因为 gcc(至少 >= 4)会警告您将 char const [] 分配给 char * 已被弃用...正如您所见,这是有充分理由的。