在介绍指针数组之前,首先必须先知道什么是数组,先来一个实例巩固下数组:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,Num, arr[100];
printf("请输入数组的长度(必须<100):");
scanf("%d",&Num);
printf("数组个数为:%d\n",Num);
for(i=0;i<Num;i++)
{
printf("输入%d个元素(必须是整数):",i+1);
scanf("%d", &arr[i]);
}
printf("数组为:");
for(i=0;i<Num;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
system("pause");
return 0;
}
仿真结果为:
如果,我们想要让数组存储指向 int 或 char 或其他数据类型的指针,可以用下面这个指针数组的声明:
int *arr[Num];
上述代码,把 ptr 声明为一个数组,由 Num 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 数据类型的指针,下面举例进一步说明(注意看注释的几行):
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,Num, arr[100],*ptr[100]; //新添加一个指针数组*ptr[100]//
printf("请输入数组的长度(必须<100):");
scanf("%d",&Num);
printf("数组个数为:%d\n",Num);
for(i=0;i<Num;i++)
{
printf("输入%d个元素(必须是整数):",i+1);
scanf("%d", &arr[i]);
ptr[i]=&arr[i]; //将arr[i]的变量对应的地址赋给prt[i]的变量中//
}
printf("数组为:");
for(i=0;i<Num;i++)
{
printf("%d ",arr[i]);
}
printf("\n数组为(采用指针数组法):");
for(i=0;i<Num;i++)
{
printf("%d ",*ptr[i]); //从指针数组中的地址取对应的变量//
}
printf("\n");
system("pause");
return 0;
}
仿真结果:
最后,再给一个利用指针数组存储字符串列表的案例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char *Countries[] = {"China","Japan","America","England","German"};
int i ,j, Num=5;
printf("有%d个国家,分别是:",Num);
for ( i = 0; i < 5; i++)
{
char *p = Countries[i];
int len = strlen(Countries[i]);
for(j = 0;j < len;j++)
{
printf("%c", *(p++) );
}
printf(" ");
}
printf("\n");
system("pause");
return 0;
}
仿真结果: