大佬教程收集整理的这篇文章主要介绍了c – 访问typedef’ed指针数组的元素,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#define N (128) #define ELEMENTS(10) typedef int (*arrayOfNPointers)[N];
所以,如果这是正确的,它是一个描述N指针数组的数据类型.
我稍后单独初始化我的数组,如下所示:
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]; } } }
这个阵列逻辑是否严重破坏?
#define N 128 #define ELEMENTS 10 typedef int* arrayOfNPointers[N]; arrayOfNPointers myPtrs = { 0 }; int i; for (i=0; i<N; i++) { myPtrs[i] = malloc(sizeof( int ) * ELEMENTS); }
您希望arrayOfPointer是一个N指向ELEMENTS整数的数组.另外,当malloc()为整数空间时,需要将ELEMENTS的数量乘以整数的大小.实际上,您分配的空间太小,无法容纳您尝试存储在其中的数据.
您的typedef将arrayOfPointer声明为指向N个整数数组的指针.请记住使用左右阅读规则来了解您声明变量/类型的内容.因为你在parens中有(* arrayOfPointer),右边没有任何东西,左边有一个指针,所以arrayOfPointer是一个指针TO [N](右)int(左).不是你想要的.
以上是大佬教程为你收集整理的c – 访问typedef’ed指针数组的元素全部内容,希望文章能够帮你解决c – 访问typedef’ed指针数组的元素所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。