欢迎来到天天文库
浏览记录
ID:14158018
大小:50.00 KB
页数:5页
时间:2018-07-26
《指向指针的指针——彻底搞定c指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、彻底搞定C指针---指向指针的指针彻底搞定C指针---指向指针的指针一.回顾指针概念:今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:shortinti;chara;shortint*pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6 7 8 9 10 11 12 13 14 15-------------------------------------------------------------------------------------…
2、
3、
4、
5、
6、
7、
8、
9、
10、
11、
12、 -------------------------------------------------------------------------------------
13、shortinti
14、chara
15、
16、shortint*pi
17、图中所示中可看出:i变量在内存地址5的位置,占两个字节。a变量在内存地址7的位置,占一个字节。pi变量在内存地址9的位置,占两个字节。(注:pi是指针,我这里指针的宽度只有两个字节,32位系统是四个字节
18、)接下来如下赋值:i=50;pi=&i;经过上在两句的赋值,变量的内存映象如下:内存地址→6 7 8 9 10 11 12 13 14 15--------------------------------------------------------------------------------------…
19、 50
20、
21、
22、 6
23、
24、
25、
26、 -------------------------------------
27、-------------------------------------------------
28、shortinti
29、chara
30、
31、shortint*pi
32、看到没有:短整型指针变量pi的值为6,它就是I变量的内存起始地址。所以,这时当我们对*pi进行读写操作时,其实就是对i变量的读写操作。如:*pi=5; //就是等价于I=5;你可以回看本系列的第二篇,那里有更加详细的解说。 二.指针的地址与指向另一指针地址的指针在上一节中,我们看到,指针变量本身与其它变量一样也是在某个内存地址中的,如pi的内存起始地址是10。同样的,我们也可能让某个指针指向这个地址。看
33、下面代码:shortint**ppi; //这是一个指向指针的指针,注意有两个*号ppi=π 第一句:shortint**ppi;——申明了一个指针变量ppi,这个ppi是用来存储(或称指向)一个shortint*类型指针变量的地址。第二句:&pi那就是取pi的地址,ppi=π就是把pi的地址赋给了ppi。即将地址值10赋值给ppi。如下图:内存地址→6 7 8 9 10 11 12 13 14 15---------------------------------------------------
34、---------------------------------…
35、 50
36、
37、
38、 6
39、 10
40、
41、 ------------------------------------------------------------------------------------
42、shortinti
43、chara
44、
45、shortint*pi
46、shortint**ppi
47、从图中看出,指针变量ppi的内容就是指针变量pi的起始地址。于是……ppi的值是多少呢?——10。*ppi的
48、值是多少呢?——6,即pi的值。**ppi的值是多少呢?——50,即I的值,也是*pi的值。呵呵!不用我说太多了,我相信你应明白这种指针了吧! 三.一个应用实例1.设计一个函数:voidfind1(chararray[],charsearch,char*pi)要求:这个函数参数中的数组array是以0值为结束的字符串,要求在字符串array中查找字符是参数search里的字符。如果找到,函数通过第三个参数(pa)返回值为array字符串中第一个找到的字符的地址。如果
此文档下载收益归作者所有