gpt4 book ai didi

arrays - 将数组分配给C中的int

转载 作者:行者123 更新时间:2023-12-05 09:03:36 26 4
gpt4 key购买 nike

我用C写了下面的代码

int main(){
int a = {1, 2, 3};
}

似乎分配的变量,在本例中为 a,总是采用第一个数组元素的值。现在想知道是不是其他的数组元素被丢弃了,或者a之后写入内存,从而造成缓冲区溢出。

最佳答案

这个声明

 int a = {1, 2, 3};

在语义上是无效的(它打破了下面提到的语义规则)。标量对象不能由具有多个初始化器的花括号初始化器列表初始化。

来自C标准(6.7.9初始化)

11 The initializer for a scalar shall be a single expression,optionally enclosed in braces. The initial value of the object is thatof the expression (after conversion); the same type constraints andconversions as for simple assignment apply, taking the type of thescalar to be the unqualified version of its declared type.

也就是说,花括号初始化器列表中的逗号被视为初始化器的分隔符,对于标量对象,只允许使用单个表达式。

当存在多个初始化程序时,编译器会假定已初始化的对象是一个聚合。

声明一个数组你需要这样写

 int a[] = {1, 2, 3};

 int a[N] = {1, 2, 3};

其中 N 是等于或大于 3 的整数值。

关于arrays - 将数组分配给C中的int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69765485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com