给指针malloc分配空间后就等于数组吗

如题所述

指针数组和数组指针是两个不同概念,你这里给出的定义实例实际上是指针数组的定义。
指针数组是指所定义数组的每个数组元素都是一个相应数据类型的指针,开设空间的操作可以应用循环语句进行,例如:对于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");
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答