**
**
2、指针数组定义:数组中每个元素都是一个指针(地址)
每个元素只能是地址,不能是普通数据
3、定义指针数组的语法:
数据类型 *数组名[数组长度/元素个数]={地址列表};
例如:
int a=10,b=20,c=30l
int *p[3]={&a,&b,&c};
结果:p[0]=&a;p[1]=&b;p[2]=&c;
等价:*(p+0)=&a;*(p+1)=&b;*(p+2)=&c;
取值:*p[0]=10; *p[1]=20; *p[2]=30;
等价于
**(p+0)=10; **(p+1)=20; **(p+2)=30
应用场合:将来如果要定义大量同类型的指针变量时,要想起采用指针
数组的形式简化代码
**
定义:字符指针数组中每个元素是一个字符串的首地址
例如:
char *p[2] = {"abc", "efg"};
或者
char *p1 = "abc";
char *p2 = "efg";
char *p[2] = {p1, p2};
结果:
p[0] = p1 = "abc" = 第一个字符串的首地址
p[1] = p2 = "efg" = 第二个字符串的首地址
可复制代码如下:
可复制代码1:
#include
int main()
{
int a=10,b=20,c=30;
int *p[3]={&a,&b,&c};
int length=sizeof(p)/sizeof(p[0]);//计算元素个数
for(int i=0;i
可复制代码2
#include
int main()
{
//1、形式1
char *p[]={"abc","efg"};
int len=sizeof(p)/sizeof(p[0]);
//读查看
for(int i=0;iB,"efg"的'g'->'G'
// *(p[0]+1)='B';
// *(p[1]+2)='G';
//由于是字符串和指针的关系,所以是不允许修改的
//2、形式2
//要想修改需要使用数组形式
char *p1="mnl",*p2="xyz";
char *p3[]={p1,p2};
//读查看
for(int i=0;iB,z->Z
a[0][1]='B';
a[1][2]='Z';
for(int i=0;i<2;i++)
printf("%s\n",a[i]);
}