首页 > 试题广场 >

下列选项哪些语句可以正确定义数组( &n...

[不定项选择题]
  • #define N 2017
    int arr[N];
  • #define N 2017
    int arr[N*2];
  • int i=2017;
    int arr[i];
  • int arr[]={1};
数据的长度不能为变量,所以C是错的,其它都对
发表于 2019-09-15 14:50:48 回复(6)
连题目都没有,就给四个选项
发表于 2022-07-28 16:07:43 回复(2)

很奇怪,C选项使用gcc是可以编译通过的。

int main() {
    int i = 10;
    int arr[i];
    return 0;
}
# gcc --version | head -n1
gcc (Debian 8.3.0-6) 8.3.0
发表于 2020-07-19 13:29:46 回复(10)
gcc中c应该可以?
发表于 2020-09-12 21:50:51 回复(1)
只有我看不到题目?
发表于 2023-05-23 20:20:18 回复(2)
所以这个题的问题是什么,我答完都没看到问题😂😂😂
发表于 2022-07-25 09:26:51 回复(0)
在我的编译器上好像除了C之外其它都是可以的通过的:)
发表于 2019-09-03 17:06:11 回复(0)
D不对吗?列表初始化,可以忽略数组的维度。C++ Primer p102
发表于 2019-08-22 22:19:26 回复(9)
c选项:数组定义大小可以为变量???
发表于 2022-05-21 20:19:24 回复(4)
求解A、B为什么是对的,用VS2015试了一下,虽然不使用arr能通过编译,但是使用arr数组直接报错,根本就没有定义。

而且arr[N]里使用的宏定义N都无效,颜色都没变。一般在后面的语句使用N是会变色的。
编辑于 2021-07-03 10:43:55 回复(2)
不是哥们,你让我怎么做?皇帝的新题是吧。
发表于 2023-12-26 11:48:22 回复(0)

A.#define N 2017 int arr[N];这个写法是正确的。宏定义将N替换为2017,然后定义了一个大小为2017的整型数组arr。

B.#define N 2017 int arr[N*2];这个写法也是正确的。宏定义将N替换为2017,然后定义了一个大小为2017*2的整型数组arr。

C.int i=2017; int arr[i];这个写法不是标准的C语言写法,因为数组的大小必须是一个常量表达式。但是一些编译器可能支持这种变量大小的数组定义,称为变长数组(Variable Length Arrays, VLA)。

D.int arr[]={1};这个写法也是正确的。这行代码定义了一个整型数组arr,数组中只有一个元素,即1。

发表于 2023-11-16 09:35:22 回复(0)
我还以为我卡了,开了流量刷新,重新进入,结果放弃了
发表于 2023-07-04 18:13:36 回复(0)
int i=2017;不是常量表达式,而数组的维度必须是一个常量表达式,c++primer有提到。c是错的
发表于 2023-03-23 18:49:37 回复(0)
int i=2017;
int arr[i];不成立表达式中必须有常量值

发表于 2022-10-20 19:31:50 回复(0)
答案有问题,正确应该是 A B D。

发表于 2022-10-12 12:21:52 回复(0)
c里面第三个是编不过去的,arr[]里面的值要是常量表达式
发表于 2022-08-18 21:39:25 回复(1)
这题C应该是有问题的吧

发表于 2022-08-01 15:33:01 回复(0)
c错在哪里了?
发表于 2022-03-12 00:38:30 回复(1)
我怀疑看不见题目的都是22,23,24年刷的,能看到的都是早些年刷的。
编辑于 2024-03-09 18:52:37 回复(0)