warning:deprecated conversion from string constant to ‘char *’
不赞成从字符串常量到字符指针的转换
将char 改为 const char解决(代码严格化)
warning: implicit declaration of function ‘……’
translation:……函数的声明是隐式的。
所有的函数及变量都必须先声明再使用
如果将函数放置在主函数前方这个警告将不会显示,因为已经声明过了。
error: assignment to expression with array type
数组名不能被赋值
char s[8];
s = "Beijing";
由于数组初始化为静态存储类型,而字符串常量也属于静态存储类型,用双引号括起来的内容被视为指向该字符串存储位置的指针。所以将"Beijing"指针所指向的地址赋给s指针所指向的地址,是不正确的,因为数组为const *类型,指向地址不能被修改。
所以说,C不允许将数组作为一个单元赋给另一个数组——字符串变量正是静态存储类型的数组。同时不允许{}列表式赋值(具有数组概念)。
char s[8];
s[0] = 'b';
putchar(s[0]);
字符,数值单个赋值可以,因为它们具有“值”,而不仅属于地址指针。
另外可以:
char a[7],b[7];
scanf("%s%s",a,b);
puts(a);
puts(b);
updated on 11/3/2019
error:array bound is not an integer constant before ']' token
在ElemType前加上 const 修饰符。数组的存储是静态的,因为一个内存分配是不可能预留的,而预留也会不够,数组的意义是数的组合,它应只占一块确定的存储单元,所以当在文件作用域使用VLA时,必须用const加以修饰。