• 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 ;

    绘制关系图如下:

  • 相关阅读:
    VIM常用操作
    计算机之二进制基础
    交换机安全学习笔记 第六章 IPV4 ARP攻击
    交换机安全学习笔记 第八章 针对POE的攻击
    交换机安全学习笔记 第九~十章 HSRP VRRP
    CSRF-DVWA_1.9-笔记
    命令注入-笔记
    暴力破解-H3C路由器-MSR900
    暴力破解-DVWA_1.9-笔记
    DVWA、 DSVM 环境搭建简述
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/11232765.html
Copyright © 2020-2023  润新知