C语言 指向指针的指针

执行结果截图:

 代码:

#include <stdio.h>

int main()
{
//字符指针数组
char * PoemAndSlogans[] = {
"欲穷千里目",
"曲项向天歌",
"疑是地上霜",
"野渡无人舟自横",
"Impossible is nothing!"};
//指向字符指针数组(即数组第一个元素)的指针
char * * pPS = PoemAndSlogans;
//指向字符指针的指针
char * * Poem [4];
int i;

printf("字符指针方式打印诗歌和口号数组的所有元素:\n");
for (i = 0; i < 5; i++)
{
printf("%s\n", * (pPS + i));
}
printf("\n");

/* 抽取诗歌和口号数组中的诗歌元素
* 因为字符指针PoemAndSlogans[0]前有&,
* 所以Poem[0]是指向字符指针变量PoemAndSlogans[0]的指针。
* 嵌套指针的情况下,高级指针指向的是低级指针变量,
* 关注的是对低级指针进行定位和抽取,而不是关注低级指针所指向的数组元素地址
*/
Poem[0] = &PoemAndSlogans[0];
Poem[1] = &PoemAndSlogans[1];
Poem[2] = &PoemAndSlogans[2];
Poem[3] = &PoemAndSlogans[3];

printf("抽取字符数组元素的地址,用 * 解一层引用,打印所抽取的诗歌名:\n");
for (i = 0; i < 4; i++)
{
printf("%s\n", * Poem[i]);
}
printf("\n");

printf("只操作嵌套指针,而不用对整个数组进行操作,可以避免重复分配内存,只需要进行一处修改\n");
  return 0;
}
posted @ 2021-12-23 00:23  JohnnyH  阅读(163)  评论(0)    收藏  举报