020730 发表于 2022-9-24 09:37:47

求助题

这个怎么做

dolly_yos2 发表于 2022-9-24 09:45:50

本帖最后由 dolly_yos2 于 2022-9-24 09:49 编辑

如果这个题库(答案)可靠的话,那就没法做,只能背答案。
看样子似乎 C 和 D 应该合并为一个选项,否则 D 显然有一个未定义的符号 S ,而 C 完全不是数组说明。如果合并为一个选项,那么 S 会在编译之前被替换为 10 ,这句话等价于 int a; ,显然没有问题。
A 是 VLA ,同样没有问题,但答案给出的是这个,那如果目的是刷题考试的话唯一的办法就是背下来。

临时号 发表于 2022-9-24 09:51:22

你这个试卷用的可能是ANSI C,也就是C89标准
在C89标准中,这样写是不允许的,在C99标准后才能这样写
int n = 2;
int a;

临时号 发表于 2022-9-24 09:52:16

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

可能试卷用的C语言标准是ANSI C,在ANSI C中,不能这样写

临时号 发表于 2022-9-24 10:02:11

在ANSI C中如果要实现A选项的功能就必须这样写
#include <stdio.h>
#include <stdlib.h>

int main()
{
        int N;
        int *a = NULL;
        scanf("%d",&N);
        a = (int*)malloc(sizeof(int)*N);
        free(a);
}

临时号 发表于 2022-9-24 10:05:48

https://www.icourse163.org/learn/ZJU-200001?tid=1467811465#/learn/content?type=detail&id=1249287752&cid=1276744480

嘉岳呀 发表于 2022-9-25 15:09:48

在 C 和 C++ 中,变量不能用于定义数组大小

zhangjinxuan 发表于 2022-9-28 19:53:06

阿巴阿巴,我是C++11

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

试卷好像有问题,C应该和D连在一起的
页: [1]
查看完整版本: 求助题