zoukankan      html  css  js  c++  java
  • C语言 崩溃的双重指针

    指针的指针?

    前言:  

           指针的初识点击移步

    双重指针:

      指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。

    直接上脚本

    #include <stdio.h>
     
    int main ()
    {
    	int a = 10;
    	int *p,**pt;
    	
    	p = &a;
    	pt = &p;
    	
    	printf("变量a的内存地址:0x%X
    ",&a); 
    	printf("变量a存储的值:%d
    ",a);
    	printf("指针p的内存地址:0x%X
    ",&p); 
    	printf("指针p存储的地址:0x%X
    ",p); 
    	printf("指针pt的内存地址:0x%X
    ",&pt); 
    	printf("指针pt存储的地址:0x%X
    ",pt); 
    } 

    执行输出

    变量a的内存地址:0x24FE4C
    变量a存储的值:10
    指针p的内存地址:0x24FE40
    指针p存储的地址:0x24FE4C
    指针pt的内存地址:0x24FE38
    指针pt存储的地址:0x24FE40

    由输出可见,双重指针pt存储的地址为指针p的内存地址 即pt = &p ; 单指针之前已经总结过,在此不再赘述;那么*pt,**pt又为何值与指针p的关系是什么? 

    #include <stdio.h>
     
    int main ()
    {
    	int a = 10;
    	int *p,**pt;
    	
    	p = &a;
    	pt = &p;
    	
    	printf("变量a的内存地址:0x%X
    ",&a); 
    	printf("变量a存储的值:%d
    ",a);
    	printf("指针p的内存地址:0x%X
    ",&p); 
    	printf("指针p存储的地址:0x%X
    ",p); 
    	printf("指针pt的内存地址:0x%X
    ",&pt); 
    	printf("指针pt存储的地址:0x%X
    ",pt); 
    	printf("指针*pt是什么:0x%X
    ",*pt); 
    	printf("指针**pt是什么:%d
    ",**pt); 
    } 
    
    //变量a的内存地址:0x24FE4C
    //变量a存储的值:10
    //指针p的内存地址:0x24FE40
    //指针p存储的地址:0x24FE4C
    //指针pt的内存地址:0x24FE38
    //指针pt存储的地址:0x24FE40
    //指针*pt是什么:0x24FE4C
    //指针**pt是什么:10

    等价关系 *pt = p ,**pt = p ;

    绘制关系图如下:

  • 相关阅读:
    VS2008中影响exe大小的和速度的选项(转)
    Some VS2005 and VS2008 Wizards Pop Up Script Error(转)
    winform 界面控件更新(转)
    SQL 2005 的存储过程和触发器调试大法(转)
    c# 正则表达式(转)
    让国外邮件服务商不再拒收你的邮件,The IP you're using to send mail is not authorized(转)
    vs2010 修改标题的方法
    SetFilePointer 使用
    修复2003系统,html图表不正确的方法
    c#字符串及数组操作 (转)
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/11232765.html
Copyright © 2011-2022 走看看