level 1
虎59高手
楼主
这是一个测试的代码:
#include<stdio.h>
char *str1[1][1];
char *str2="str 2";
int main() {
str1[0][0]="str 1";
printf("%s\n%s",str1[0][0],str2);
}
输出也很合理:

然后把他改一下:
#include<stdio.h>
char *str1[1][1];
str1[0][0]="str 1";//把这个赋值放到了主函数外
char *str2="str 2";
int main() {
printf("%s\n%s",str1[0][0],str2);
}
事情就出现了:

报错信息:

方便复制报错信息:
[Error] 'str1' does not name a type
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
差别只有数组中变量赋值在函数里面还是外面
但是很明显不在数组里的变量在函数外面赋值完全没有问题
我无法理解,有人知道原因吗
(dev c++ 编译)
2021年11月18日 09点11分
1
#include<stdio.h>
char *str1[1][1];
char *str2="str 2";
int main() {
str1[0][0]="str 1";
printf("%s\n%s",str1[0][0],str2);
}
输出也很合理:

然后把他改一下:#include<stdio.h>
char *str1[1][1];
str1[0][0]="str 1";//把这个赋值放到了主函数外
char *str2="str 2";
int main() {
printf("%s\n%s",str1[0][0],str2);
}
事情就出现了:

报错信息:
方便复制报错信息:[Error] 'str1' does not name a type
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
差别只有数组中变量赋值在函数里面还是外面
但是很明显不在数组里的变量在函数外面赋值完全没有问题
我无法理解,有人知道原因吗
(dev c++ 编译)