C语言 通过malloc函数给指针数组分配空间 p=(int*)malloc(40*sizeof(int)) 这种写法对么,为啥编译出错啊

或者 p=(int*[10])malloc(40*sizeof(int)) 这个呢,也一样出错啊,我用的DEV-C++

义实例实际上是指针数组的定义。
指针数组是指所定义数组的每个数组元素都是一个相应数据类型的指针,开设空间的操作可以应用循环语句进行,例如:对于char *p[10]; 可以应用
for(i=0;i<10;i++)
p[i]=(char *)malloc(sizeof(char)*N); //为每个指针申请开设N字符的存储空间
开设后,对于p的使用与二维数组的使用格式类似,可以有效的使用两个下标,
如 p[0][0]='A';
还可以像每个指针中赋值字符串: p[2]="Beijing"; 当然字符串长度应该小于N。

而数组指针,是指定义为指向某个固定大小顺序空间的指针,定义的格式如下:
char (*pa)[10]; //定义一个指向拥有10元素的字符数组的指针,
int (*p)[10];
应用格式可以参考下述程序,申请空间、赋值、输出后,可以观察到100被赋值到第五行第十个元素,指针可以像二维数组一样通过两个下标引用所申请开设的空间。
#include<alloc.h>
main()
{ int (*p)[10];
int i,j,k;
p=(int(*)[10])malloc(sizeof(int(*)[10])*5); //申请开设5个单元,每个单元拥有10个连续空间
p[4][9]=100;
for(i=0;i<5;i++)
{ for(k=0;k<10;k++)
printf("%8d",p[i][k]);
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-03
这个语法是对的,但不清楚你具体代码情况是怎么样的,所以不好说。如果方便的话可以贴出来看看。
第2个回答  2011-03-03
p=(int*)malloc(40*sizeof(int)) 这样写没错,你的编译环境有问题?p定义成int *p
第3个回答  2011-03-03
p定义成int *p
相似回答