char型指针数组和数组指针赋值方法
指针数组赋值
指针数组是指所定义数组的每个数组元素都是一个相应数据类型的指针,开设空间的操作可以应用循环语句进行,例如:
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<stdio.h>
#include<stdlib.h>
void 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");
}
}