鱼C论坛

 找回密码
 立即注册
查看: 2620|回复: 7

[技术交流] 求助题

[复制链接]
发表于 2022-9-24 09:37:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个怎么做
微信图片_20220924093614.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-24 09:45:50 | 显示全部楼层
本帖最后由 dolly_yos2 于 2022-9-24 09:49 编辑

如果这个题库(答案)可靠的话,那就没法做,只能背答案。
看样子似乎 C 和 D 应该合并为一个选项,否则 D 显然有一个未定义的符号 S ,而 C 完全不是数组说明。如果合并为一个选项,那么 S 会在编译之前被替换为 10 ,这句话等价于 int a[10+5]; ,显然没有问题。
A 是 VLA ,同样没有问题,但答案给出的是这个,那如果目的是刷题考试的话唯一的办法就是背下来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 09:51:22 | 显示全部楼层
你这个试卷用的可能是ANSI C,也就是C89标准
在C89标准中,这样写是不允许的,在C99标准后才能这样写
  1. int n = 2;
  2. int a[n];
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 09:52:16 | 显示全部楼层
dolly_yos2 发表于 2022-9-24 09:45
如果这个题库(答案)可靠的话,那就没法做,只能背答案。
看样子似乎 C 和 D 应该合并为一个选项,否则 D ...

可能试卷用的C语言标准是ANSI C,在ANSI C中,不能这样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 10:02:11 | 显示全部楼层
在ANSI C中如果要实现A选项的功能就必须这样写
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.         int N;
  6.         int *a = NULL;
  7.         scanf("%d",&N);
  8.         a = (int*)malloc(sizeof(int)*N);
  9.         free(a);
  10. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 10:05:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-25 15:09:48 | 显示全部楼层
在 C 和 C++ 中,变量不能用于定义数组大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 19:53:06 | 显示全部楼层
阿巴阿巴,我是C++11

但是我还是懂点,如果数组指定长度包含变量(不包含常量,宏变量),那就报错,但是表达式不会

试卷好像有问题,C应该和D连在一起的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 14:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表