当前位置: 首页 > news >正文

【时时三省】(C语言基础)指向指针数据的指针变量

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

在了解了指针数组的基础上,需要了解指向指针数据的指针变量,简称为指向指针的指针。

怎样定义一个指向指针数据的指针变量呢?下面定义一个指向指针数据的指针变量:

char * * p ;

P的前面有两个*号。*运算符的结合性是从右到左,因此* * p相当于* ( *p ),显然*p是指针变量的定义形式。如果没有最前面的*,那就是定义了一个指向字符数据的指针变量。现在它前面又有一个*号,即char * * p。可以把它分为两部分看,即:char*和( *p ),后面的( * p )表示p是指针变量,前面的char *表示p指向的是char型的数据。也就是说,p指向一个字符指针变量(这个字符指针变量指向一个字符型数据)。如果引用xp,就得到p所指向的字符指针变量的值,如果有:

p = name + 2 ;

printf ( " % d\n”,* p );

printf ( " % s\n ",* p );

第1个printf函数语句输出name [ 2 ]的值(它是一个地址),第2个printf函数语句以字符串形式( % s )输出字符串“Great Wall”。

例题:

使用指向指针数据的指针变量。

解题思路:

定义一个指针数组name,并对它初始化,使name数组中每一个元素分别指向5个字符串。定义一个指向指针型数据的指针变量p,使p先后指向name数组中各元素,输出这些元素所指向的字符串。

编写程序:

运行结果: 

程序分析:

p是指向char*型数据的指针变量,即指向指针的指针。在第1次执行for循环体时,赋值语句“p = name + i;”使p指向name数组的0号元素name [ 0 ],* p是name [ 0 ]的值,即第1个字符串首字符的地址,用printf函数输出第1个字符串(格式符为%s)。执行5次循环体,依次输出5个字符串。

例题2:

有一个指针数组,其元素分别指向一个整型数组的元素,用指向指针数据的指针变量,输出整型数组各元素的值。

编写程序:

 运行结果:

程序分析: 

程序中定义p是指向指针型数据的指针变量,开始时指向指针数组num的首元素num [ 0 ],而num [ 0 ]是一个指针型的元素,它指向整型数组a的首元素a [ 0 ]。开始时p的值是& num [ 0 ],*p是num [ 0 ]的值,即&a [ 0 ],* ( *p )是a [ 0 ]的值。因此第1个输出的是a [ 0 ]的值1。然后执行p + +,p就指向num[1]再输出* *p,就是a [ 2 ]的值3了。请不要把第3和第4行错写为

int * num [ 5 ] = ( 1,3 , 5 , 7 , 9 );

指针数组的元素只能存放地址,不能存放整数。

“间接访问”变量的方式。利用指针变量访问另一个变量就是“间接访问”。如果在一个指针变量中存放一个目标变量的地址,这就是“单级间址”,指向指针数据的指针用的是“二级间址”方法,从理论上说,间址方法可以延伸到更多的级,即多重指针,但实际上在程序中很少有超过二级间址的。级数愈多,愈难理解,容易产生混乱,出错机会也多。

 

 

 

http://www.dtcms.com/a/305350.html

相关文章:

  • 2025年中科院1区SCI-冬虫夏草优化算法Caterpillar Fungus Optimizer-附Matlab免费代码
  • 《汇编语言:基于X86处理器》第10章 结构和宏(3)
  • 【Dify】分享一篇之前部署过的过程
  • 机器学习算法—— K-近邻算法
  • MybatisPlus-核心功能
  • 【网络工程师软考版】网络安全
  • ROUGE-WE:词向量化革新的文本生成评估框架
  • 3D 工业相机解析:轴向、平面、重复、线性精度到底哪个更重要?
  • 【拓扑排序 最短路】P2149 [SDOI2009] Elaxia的路线|省选-
  • 爱普生L3219开机三灯同时闪报错031006故障分析
  • python的进程、线程、锁
  • SQL Server中的分页查询
  • Elasticsearch重点
  • 路径平滑优化算法--B样条(B-spline)路径平滑算法
  • 2025年八大OA系统综合评测:Kimi+DeepSeek专业推荐
  • U3D中的package
  • Python 程序设计讲义(27):字符串的用法——字符串的常用操作
  • 自组织粒子群优化算法(Self-Organizing Particle Swarm Optimization, SOPSO)求解Rastrigin函数
  • STM32CubeIDE新建项目过程记录备忘(一)
  • JSON:数据交换格式
  • 本地使用postman调试mcp接口
  • 力扣刷题(第一百零二天)
  • Level2可转换债券高频交易五档行情Tick级分钟历史数据深度解析
  • PDF 文档级脚本(Document Level Scripts)
  • SZU大学物理实验报告|光敏电阻
  • 2025年JCR一区新算法-回旋镖气动椭圆优化算法Boomerang Aerodynamic Ellipse(BAE)-附Matlab免费代码
  • Git分支
  • BGP团体属性实验案例
  • PostgreSQL 中 date_trunc 为什么能走索引?【待验证】
  • 【每日一错】Oracle 19c CDB中如何启动一个PDB