【https://www.cnblogs.com/dodolook/archive/2011/06/24/2089309.html】

指向指针的指针到底是什么

  指针是一种抽象,在计算机中指地址编号,当然你可以把生活中的任何东西进行精心有用的抽象,一个指针在计算机中就相当于地址编号+其对这个地址编号的解释方式。指针变量呢就是1个代号,通过这个代号可以取得指针的这么一个东西,为什么会有变量产生,主要是为了避免程序员直接和地址打交到而产生的变量。指针变量也是变量占内存的,所以指针变量就会它的地址,既然有地址,那么这个地址就可以给另外一个指针变量,那么另外的这个指针变量就叫做指向指针的指针。

变量的直接引用与间接引用

通过变量名叫做直接引用,通过指针对变量的引用叫间接引用

间接引用的两种情况

1,如果在一个指针变量中存放的是一个目标变量的地址叫做一级地址

2,如果在一个指针变量中存放的是指向目标变量的地址的指针变量的地址,那么这个就叫做二级地址。

怎么来理解这2句话呢,就是可以这么比喻。你喜欢1个人,然后在电话本上找到它的号码(指针)然后你就可以打电话去表白啦!这个就是叫一级地址。再如果,你喜欢1个人,但是你没有他的电话号码,但是你知道他妹妹的电话号码,你就可以拿出电话本查询找她妹妹的电话号码(指针)然后通过她妹妹的电话本(指针)最终找到你喜欢的人!也就是说二级指针取内容便得到一级指针,一级指针再取内容就得到了目标变量啦!

注意一个程序指针要是超过了2级,你就该考虑下你的设计是否合理了。

指向指针的指针的例子:

void main()
{
int a =99;
int*pa =&a;
int**ppa =&a;
}

大家看这个程序正确吗?细心的你一下子就反应过来,这样是绝对不行的,因为类型不匹配呀!会报错啦!

那么再看这个程序:

void main()
{
int a =99;
int*pa =&a;
int**ppa = &&a;
}

嘿嘿!这样是不是就可以啦!其实啊!这样写也是错误的,因为变量取地址就是一个地址常量,地址常量是无法取地址的呢!我们的取地址符只能对有内存空间的东西啦!

所以正确的应该是这样的:

void main()
{
int a =99;
int*pa =&a;
int**ppa =&pa;
}

下面我们再来看一个程序,这个程序明白了,二级指针到底是什么就一下子就明白啦:

现在我们来一行一行的看:

第一个printf语句 a,这个大家都知道啦,输出肯定是63啊,因为十进制99,十六进制就是63啊!

第二个printf语句 pa, pa是不是就代表0x0012ff40啊呵呵!一个变量的本质就是避免程序员和地址打交到啦!04的话就是0012ff44啦!对吧!

第三个printf语句 *pa, *pa就是第二句中的0012ff44取内容啊,当然就是63啦!

第四个printf语句 ppa, ppa呢!通过前面的笔记一看就知道它显示出的值是0012ff40啦!

第五个printf语句,*ppa, *ppa呢!唉!现在看来真是太简单了,显示出0012ff44

第六个printf语句,**ppa, **ppa呢就是0012ff44再取内容嘛!63啦!

通过这么一分析,是不是很简单啊!绝对不会头晕吧!呵呵!

这节笔记先就记录到这里,在(二)中继续记录指向指针的指针的应用。主要是刚才连续学习6小时,有点累了,我要出去走走啦!边散步边开心啦!嘿嘿!因为我现在觉得什么指针的指针的指针的指针。。。。都将是浮云!

C语言指针理解(一)相关推荐

  1. C语言指针理解patr1

    今天在看<Head First C语言>中,书中的代码是*lat=*lat+1;我则写成了*lat++:结果是并不能得到lat指针的内容加一.之后发现原来在C语言中*解指针运算符 与++后 ...

  2. c语言指针p1p2,C语言指针系列(2):你真的理解指针与内存的关系吗?

    C语言指针可谓是C语言的灵魂,无论是在C语言算法,还是在数据结构,他无处不在.指针,这对于老手如同家常便饭一样的操作,却在萌新面前如同一座万丈高山! 中国的伟人曾经说过: 世上无难事,只怕有心人! C ...

  3. C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)

    文章目录 写在前面 一.思考指针的基础 1.指针的实质 2.指针的层次 3.指针的分类 4.两个符号(&和*) 二.单指针(int *p) 三.指针数组(int *p[10]) 四.行指针(i ...

  4. 深入理解C语言指针的奥秘-4

    深入理解C语言指针的奥秘-4 http://www.gooogleman.com/forum.php?mod=viewthread&tid=18722&fromuid=1290 转载于 ...

  5. 最热网友收藏:深入理解C语言指针的奥秘((2007年第3周)

    2007年第3周最热网友收藏 深入理解C语言指针的奥秘(93),共121人收藏,yanglilibaobao首先收藏 我来做个好人吧,40种网站设计常用技巧(78),共440人收藏,wuzeng200 ...

  6. c语言指针与数组的深入理解

    引言:本篇再一次写到指针,学过c语言的都知道,指针是初学c语言时候遇到的一个比较难搞的知识点.你尽管可以想的简单,但是其实如果去用的话,没有一个更加深入的理解,那么后续的学习到数据结构就会艰难无比. ...

  7. 深入理解C语言指针类型

    C语言指针类型 这部分内容其实很简单,本来不想写的,但是一开始我还真没理解指针类型,所以后来想想还是写一个吧!得了废话少说直接上代码 #include <stdio.h> #include ...

  8. c语言获取指针分配的字节数,c语言指针知识点总结(共6篇).docx

    c语言指针知识点总结(共6篇) C语言指针教学中的知识点分析与总结 摘要:分析指针的基本概念及指针在数组.函数.字符串.动态存储分配等方面的应用,提出指针教学过程中易混淆概念及注意事项,对初学者深入理 ...

  9. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  10. c语言 指针函数 详解,[NOTE-C]C语言指针详解(一)

    C语言指针让一切想法变成可能,强转和指针可以看做一项呼风唤雨的利器,但是C语言中指针应用又需要格外的小心,其更灵活的利用内存,因为不当的应用可能引起各种异常,这篇文章就是让我们一起来认识C指针,更好的 ...

最新文章

  1. 缓冲区溢出以及缓冲区溢出攻击
  2. 容器学习 之 限制容器资源(十一)
  3. 如何修改 SAP Spartacus CMS API 默认的 endpoint
  4. 链接(了解)---Linux
  5. win10系统进入监护人模式的方法
  6. InfoPath中repeationg section动态填充数据
  7. 嵌入式系统开发快速体验
  8. Windows游戏编程大师技巧第二版学习笔记之第一章
  9. acpi_hardware_id可以通过HID/CLD/UID/CLS/method/path获得
  10. CISCO 6509 三层交换机配置
  11. 大道至简:数据库的终极未来
  12. Nginx完全正向保密(perfect forward secrecy)设置
  13. QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)
  14. 低照度水下图像增强论文(L2UWE)+代码+评价方法
  15. 让QQ的文字漂亮起来
  16. 人工智能定义的 IT 基础设施浅析
  17. C# 保存窗体为图片(保存纵断面图)
  18. 《机器学习实战》学习笔记(八)
  19. mysql 全局不重复_如何批量生成MySQL不重复手机号大表实例代码
  20. 肾有多好人就有多年青――男女通用

热门文章

  1. LeetCode Hard难度题目题解汇总(5/150)
  2. [bzoj3202] [SDOI2013]项链
  3. H3CNE-生成树协议(STP)
  4. SSM框架整合—CRM小案例
  5. 【宝藏系列】如何解决word选中文字按backspace无法删除的问题
  6. 华为砍单,小米、荣耀谁会“上位”?
  7. 结巴分词5--关键词抽取
  8. 怎么使用关键词获取视频列表 API
  9. 计算机网络按传输介质分为哪几类,计算机网络按传输介质可分为哪三类?
  10. 让终端窗口“下雪”的有趣指令