gpt4 book ai didi

c - 来自给定数组的位 vector 实现

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:31 25 4
gpt4 key购买 nike

我正在尝试从给定数组创建一个位 vector 集。不知道如何开始。例如给定数组:int rows[] = {1, 2, 5} 我需要创建一个函数 unsigned short MakeBitVector(int values[], int nValues)您可以假设数组中元素的范围是 1-9。这是我到目前为止所拥有的:

unsigned short MakeBitVector(int values[], int nValues)
{
(55)unsigned short int set = calloc(nValues, sizeof(unsigned short));
for(int i = 0; i < nValues; i++){
(57)set[i] = values[i];
}
return set;
}

我不断收到警告和错误:

bits.c:55: 警告:初始化从没有转换的指针生成整数

bits.c:57: 错误:下标值既不是数组也不是指针

关于如何解决这个问题有什么想法吗?

最佳答案

你肯定需要你的 set 是一个指针:

unsigned short int* set = calloc(nValues, sizeof(unsigned short));

而且您还必须将函数的返回类型更改为指针。

编辑:如果你想把所有东西都打包成一个int,你可以用更简单的方式继续:

unsigned short MakeBitVector(int values[], int nValues)
{
unsigned short int set = 0;
for (int i = 0; i < nValues; i++)
set |= 1 << values[i];
return set;
}

您不需要分配单个 int,返回副本就可以了。

关于c - 来自给定数组的位 vector 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541768/

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