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 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示