gpt4 book ai didi

c - 如何将函数中的数组大小传递给函数?我没有 “Variable-sized object may not be initialized”

转载 作者:行者123 更新时间:2023-11-30 14:36:58 24 4
gpt4 key购买 nike

我想将函数内部声明的数组的大小传递给同一个函数。但后来我收到警告“表达式必须是常量值”。这个问题有解决办法吗?

// Draws a sprite in the console using hex-coded sprite with a specific width
void hex_to_sprite(char* hex_number, int width, int size)
{
// hex_number = array of hex-coded sprite
// width = width of sprite you want to draw
// size = length of the hex_number multiplied by 4 (0 = 0000, 1 = 0001, etc.)
char binary_coded_sprite[size] = "";

}

我应该学习动态分配来解决这个问题吗?

最佳答案

您将 binary_coded_sprite 声明为可变长度数组,其中数组大小直到运行时才知道。 VLA 的限制之一1是它们不能使用初始值设定项进行声明,因此

char binary_coded_sprite[size] = "";

需要

char binary_coded_sprite[size];

您需要使用strcpy:

strcpy( binary_coded_sprite, “” );

或者将第一个元素设置为 0

binary_coded_sprite[0] = 0;

将其初始化为空字符串。

<小时/>

  1. 其他限制是 VLA 不得声明为静态或在文件范围内,也不得为 structunion 类型的成员。

关于c - 如何将函数中的数组大小传递给函数?我没有 “Variable-sized object may not be initialized”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723261/

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