C语言简单题目,颠覆我的价值观
int main()
{
int i = 10;
i++;
char str[i];
strcpy(str, "1234567890123456789");
printf("sizeof(str):%d,%s\n", sizeof(str),str);
return 0;
}
这个段代码,居然运行正常,输出正常?
颠覆我的价值观啊!!
可以这样动态定义临时数组的?
拷贝字节太多,程序居然也没有崩溃!!
Gcc和C-Free测试过输出为
sizeof(str):11,1234567890123456789
C
[解决办法]
C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。