gpt4 book ai didi

c++ - 访问类型定义的指针数组的元素

转载 作者:太空狗 更新时间:2023-10-29 19:46:11 24 4
gpt4 key购买 nike

我在访问传递给函数的数组元素时遇到了一些问题。

#define N (128)
#define ELEMENTS(10)
typedef int (*arrayOfNPointers)[N];

因此,如果这是正确的,它是一种数据类型,描述了指向 intN 指针的数组。

我稍后单独初始化我的数组,如下所示:

arrayOfNPointers myPtrs = { 0 };
int i;
for (i=0; i<N; i++) {
myPtrs[i] = (int*)malloc(ELEMENTS);
}

但是,这会失败并出现以下错误:

error: incompatible types when assigning to type 'int[128]' from type 'int *'

看来我的语法有问题。但是在另一段代码中,我正在修改一些此类结构的内容,我没有遇到任何问题。

void doWork(void* input, void* output) {
int i,m,n;
arrayOfNPointers* inputData = (arrayOfNPointers*)input;
int* outputData = (int*)output;

for (m=0, n=0; n<nSamples; n++) {
for (i=0; i<nGroups; i++) {
outputData[m++] = (*inputData)[i][n];
}
}
}

这个数组逻辑是否严重损坏?

最佳答案

typedef int (*arrayOfNPointers)[N];

So, if this is right, it is a data type describing an array of N pointers to int.

我认为这是一个指向 N 个整数数组的指针,而不是一个包含 N 个整数指针的数组....

这意味着下一行的行为并不像您期望的那样... myPtrs[i] = (int*)malloc(ELEMENTS);因为 myPtrs 是指向 N 维数组的指针(在本例中是 128 个整数的数组),所以 myPtrs[i] 是第 i 个 n 维数组。所以你试图将一个指针分配给一个数组,这就是你得到消息的原因......

error: incompatible types when assigning to type 'int[128]' from type 'int *'

关于c++ - 访问类型定义的指针数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179073/

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