- 二级指针&指针数组:
- 可以使用
二级指针指向一个指针数组
;
数据类型* 指针数组名[元素个数];
数据类型* *二级指针变量名;
- 两者关系:
指针数组名
<==>二级指针变量名
- 补充:指针数组的基础知识
- 格式:
- 数据类型 *指针数组名[
数组的元素个数
] - 特点:
- 1.
本质
上是一个数组
; - 2.
指针数组
中的每个元素都是一个指针类型
,即每个元素都是一个地址
; - 定义指针数组并初始化的两种方式:
- 第一种:
int a = 11;
int b = 22;
int c = 33;
int d = 44;
int e = 55;
int *p[5] = {&a,&b,&c,&d,&e};
- 第二种:
int a = 11;
int b = 22;
int c = 33;
int d = 44;
int e = 55;
int *p[5] = {NULL};
p[0] = &a;
p[1] = &b;
p[2] = &c;
p[3] = &d;
p[4] = &e;
- 指针数组的基本操作:
- 一、取指针数组每个元素的值(即普通变量的地址):
for(int i = 0; i < 5; i++)
{
printf("p[%d] = %p\n",i,p[i]);
}
- 二、取指针数组每个元素指向的地址空间的值(即普通变量的值):
for(int j = 0; j < 5; j++)
{
printf("*p[%d] = %d\n",j,*p[j]);
}
- 三、对指针数组的每个元素进行取地址的操作(即每个元素的地址):
for(int k = 0; k < 5; k++)
{
printf("&p[%d] = %p\n",k,&p[k]);
}
- 四、输出字符型指针数组中每个元素指向的字符串:
char *s[5] = {"I","Love","Henan","and","Beijing"};
for(int i = 0; i < 5; i++)
{
printf("%s ",s[i]);
}
-
拓展知识:字符型数组和字符型指针的相关操作
-
一、输出字符型数组存储的字符串:
char s1[20] = "gohome";
printf("%s\n",s1);
- 二、输出字符型指针指向的字符串:
char *s2 = "jiyuancity";
printf("%s\n",s2);