Int **pt; 一个指向指针的指针:

{

       int ** pt; //一个指向指针的指针;

       int *ppt;

       int a = ;

       ppt = &a;

       pt = &ppt;

       printf("*pt=%p\n", &*pt);

       printf("ppt=%p\n", &ppt);

       //*pt的地址就是ppt的地址

       printf("   a=%p\n", &a);

       printf("*ppt=%p\n", &*ppt);

       printf("**pt=%p\n", &**pt);

       printf("**pt=%d\n", **pt);

       printf("*ppt=%d\n", *ppt);

       //*pt的地址是ppt的地址,而ppt指向的地址是a

       //所以*ppt的地址是 a, **pt的地址是也是a,

       //但是*pt的地址是ppt的地址;

}

输出:

*pt=000000000062FE40

ppt=000000000062FE40

a=000000000062FE3C

*ppt=000000000062FE3C

**pt=000000000062FE3C

**pt=2

*ppt=2*ppt=2

再转一个别人的理解

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

  指针是一种抽象,在计算机中指地址编号,当然你可以把生活中的任何东西进行精心有用的抽象,一个指针在计算机中就相当于地址编号+其对这个地址编号的解释方式。指针变量呢就是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;
}

C语言 > 指向指针的指针的更多相关文章

  1. C语言——指向函数的指针

    转载自:http://www.cnblogs.com/liangyan19910818/archive/2011/08/19/2145270.html C语言——指向函数的指针 函数类型 (* 函数指 ...

  2. C语言 指向函数的指针

    #include <stdio.h> int sum(int a, int b) { int c = a + b; printf("%d + %d = %d\n", a ...

  3. C语言指向函数的指针

    定义形式:类型 (*指针变量名)(参数列表); 例如:int (*p)(int i,int j); 在这里 int是函数的返回类型,*p是指向函数的指针,(int i,int j);是函数的参数 注意 ...

  4. 【C语言】14-返回指针的函数与指向函数的指针

    前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...

  5. C语言二级指针(指向指针的指针)

    转载:http://c.biancheng.net/cpp/html/85.html 指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 in ...

  6. 【C语言】-返回指针的函数与指向函数的指针

    本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.i ...

  7. C语言基础语法之指向函数的指针

    指针是C语言的精髓,对于初学者来讲,指针是C语言语法学习中比较难的知识点,而这里面指向函数的指针更是不太容易理解. 下面给大家讲下怎样学习理解C语言中指向函数的指针及编程方法和使用例子. 注意:这是一 ...

  8. C语言中 指向函数的指针 简介

    引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...

  9. 【C语言入门教程】4.9 指向指针的指针

    指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针.双重指针的定义形式为: 数据类型 **变量名: ...

  10. 【学习笔记】【C语言】指向函数的指针

    每个函数都有自己的内存地址,指针保存了函数的地址后就能指向函数了. #include <stdio.h> double haha(double d, char *s, int a) { } ...

随机推荐

  1. 取消选中单选框radio的三种方式

    作者: 铁锚 日期: 2013年12月21日 本文提供了三种取消选中radio的方式,代码示例如下: 本文依赖于jQuery,其中第一种,第二种方式是使用jQuery实现的,第三种方式是基于JS和DO ...

  2. msm8916 dt选用规则

    1.AndroidBoard.mk 选则kernel build 默认配置文件:msm8916_defconfig /device/qcom/msm8916/AndroidBoard.mk #---- ...

  3. Ubuntu 14 安装MySQL指南

    ubuntu 14 安装MySQL指南安装MySQLsudo apt-get install mysql-server这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面 ...

  4. 【一天一道LeetCode】#39. Combination Sum

    一天一道LeetCode系列 (一)题目 Given a set of candidate numbers (C) and a target number (T), find all unique c ...

  5. App热补丁动态修复技术介绍

    安卓App热补丁动态修复技术介绍 来自qq空间团队:微信号qzonemobiledev QQ空间终端开发团队 1.背景 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  6. Cocos2D中的ObjectAL简介

    Cocos2D包含ObjectAL音频库,可以回放音效和音乐. ObjectAL是一个建立在低级别OpenAL API上的库.OpenAL最擅长被用来播放短的音效(.wav,.caf,.aiff),并 ...

  7. ActiveX数据对象之事务控制在VB和DELPHI中的应用

            本文发表在中国人民解放军"信息工程大学"学报 2001年第3期.        ActiveX数据对象之事务控制在VB和DELPHI中的应用             ...

  8. OAF更改动态头行

    选择头信息,动态刷新行信息.本文将详细介绍该种需求的做法. 本例沿用<OAF-头行结构>的am与vo,所以在进行本例之前,请先完成<OAF-头行结构> 一.创建页面 在test ...

  9. Zip操作的工具类

     /** * Copyright 2002-2010 the original author is huanghe. */package com.ucap.web.cm.webapp.util; ...

  10. iOS下FMDB的多线程操作(二)

    上一篇记录不使用FMDatabaseQueue来使用多线程,这一篇记录一下使用FMDatabaseQueue的方式. 需要注意的时queue操作中不能嵌套queue操作,否则会各种错误. 当使用FMD ...