gpt4 book ai didi

c - 创建并返回数组的函数导致问题

转载 作者:行者123 更新时间:2023-12-02 06:32:02 24 4
gpt4 key购买 nike

我试图编写一个返回像素颜色随机数组的函数,因此当我调用 randomPalette(i) 时,该函数将创建一个随机数组 i颜色。以下是我的代码。它说 random[colors] 错误,表达式必须具有常量值。我不知道为什么。如何解决?

pixel* randomPalette(int colors){

pixel random[colors] ;
int i, x;
srand(time(NULL)); //generate a random seed
for (i = 0; i < colors; i++){
x = rand() % 256;
random[i].r = x; random[i].g = x; random[i].b = x;
}
return random;
}

最佳答案

首先在你的代码中

pixel random[colors] ;

语法称为variable length array a.k.a VLA,仅支持 C99。如果你想让它工作,你需要强制你的编译器使用 C99 模式,比如 gcc,你需要使用 --std=C99 编译器选项。

其次,random 是一个自动局部变量,您正试图返回(地址)它。如果正在使用返回值,您将调用 undefined behavior .

解决方案:使用指针和动态内存分配,如malloc()和家人。动态分配的内存生命周期保持有效,直到通过调用 free() 手动解除分配。 ,因此您可以从函数返回指针并在调用方中使用它。

关于c - 创建并返回数组的函数导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810961/

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