qq_43323545 2018-10-21 08:31 采纳率: 50%
浏览 569
已采纳

字符数组的问题,求大佬解答

#include
#include

int main()
{
const int size =29;
int i;
int ret=-1;
char str[7][size]={"sunday","monday","tuesday","wednesday","thursday","friday","saturday"};
char str1[size];
gets(str1);

为什么用const定义他会warning,9    2   C:\Users\dell\Documents\未命名2.c    [Error] variable-sized object may not be initialized字符串的数组定义没用常量,而用define定义就能编译呢?
  • 写回答

2条回答 默认 最新

  • snowflag 2018-10-21 09:45
    关注

    c语言中,虽然const数据类型的值无法改变,但不能用来定义数组大小。原因我感觉是这样的:假设const变量是个定义在另一个文件A的全局变量,则文件B要使用该变量仅需引用,文件B在编译时并不会知道该const变量的具体值;而在编译文件B时,各段空间的大小需要确定下来了,用const变量方式的数组大小不知道,自然无法编译。编译器干脆将这种方式定义的数组全部报错,以保持语法的一致性。而define方式,在预编译阶段会把define的值修改到使用的地方,编译时自然没有问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料