gpt4 book ai didi

c - 使用指向 int 的指针初始化数组

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

嘿,我正在解决一个问题,这是我必须做的:-

编写一个名为 initarray 的函数,该函数接受一个指向 int 的指针数组和一个表示数组大小的 int 作为参数。该函数应使用指向 int 的指针(使用 malloc)初始化数组,该指针的值与存储指向它们的指针的数组索引相对应(存储在数组索引 2 处的指针应指向值为 2 的整数) .

到目前为止,我已经写了这个,但是它给了我一个错误“[Error]可变大小的对象可能未初始化”你能告诉我我在这里做错了什么吗?

#include<stdio.h>
void initArray(int **a, int sz){
int i;
for (i = 0; i < sz; i++) {
a[i] = calloc (1, sizeof **a);
*a[i] = i;
}
}
int main(){
const int Var = 10;
int *array[Var] = {NULL};
initArray(array,3);
}

最佳答案

由于历史原因,const 变量的值在 C 中永远不会被视为常量表达式

因此,如果将其用作数组维度,则该数组是一个变长数组,并且变长数组不允许有初始值设定项。

尚未提及的一个解决方案是使用enum。枚举数实际上是常量表达式,并且它们不会遇到与预处理器宏相同的“更大的锤子”问题:

int main()
{
enum { Var = 10 };
int *array[Var] = {NULL};
initArray(array,3);
}

关于c - 使用指向 int 的指针初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36489110/

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