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 @   JohnnyH  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示