我在访问传递给函数的数组元素时遇到了一些问题。
#define N (128)
#define ELEMENTS(10)
typedef int (*arrayOfNPointers)[N];
N
因此,如果这是正确的,那么它是一种描述指向 的指针数组的数据类型int
。
后来我单独初始化我的数组,如下所示:
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];
}
}
}
这个数组逻辑是不是被严重破坏了?