C++及C常见错误翻译和总结

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加以修饰。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值