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 Java中消息和缓存如何使用
  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路