给数组指针分配空间malloc的问题

申明char * p;
p=(char *) malloc(sizeof(char));是OK的。那么数组为什么不可以呢
申明int (* p)[12];//或者 char (* p)[][];
p=(char *) malloc(12*sizeof(char));提示指针可疑

int (* p)[12];这是数组指针,指针的类型为(*)[12],即指针指向的类型为12个元素的整形数组。
p = (int*) malloc(12*sizeof(int));这里说明p的类型为一个整型 int *。
显然类型不匹配!

int (* p)[12];
p = (int (*)[12]) malloc(12*sizeof(int));

char (* p)[2][3];
p = (char (*)[2][3]) malloc(6*sizeof(char));

char (* p)[][3];
p = (char (*)[][3]) malloc(6*sizeof(char));高维不可省略

对于二重指针是分两步,比如:
float **Cluster=(float **)malloc(sizeof(float *)*K)
for(i=0;i<K;i++)
Cluster[i]=(float *)malloc(sizeof(float)*N);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-01
你需要分两步做,第一次分配12个指针类型的空间来存放指针,然后再循环分配除这12个指针指向的数租。
相似回答