zoukankan      html  css  js  c++  java
  • 【424】C语言二级指针

    参考:C 指向指针的指针

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

    C 中指向指针的指针

    一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:

    int **var;

    当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示:

    • var:int 变量
    • ptr:指向 var 的指针
    • pptr:指向 ptr 的指针

    • 表示 var 值的三种方法:
      • var
      • *ptr:ptr 指针所对应的值,即 var
      • **pptr:*pptr 指针所对应的值,即 ptr,所以 **pptr = *ptr = var
    • 表示 ptr 值(var 地址,pptr 对应的值)的四种方法:
      • &var:表示 var 的地址,即 ptr
      • ptr
      • &(*ptr):*ptr 相当于 var
      • *pptr:*pptr 指针所对应的值,即 ptr,所以 *pptr = ptr = &var
    • 表示 pptr 值(ptr 地址)的三种方法:
      • &ptr:表示 ptr 的地址,即 pptr
      • pptr
      • &(*pptr):*pptr 相当于 ptr
    • 表示 pptr 地址的方法:
      • &pptr
    #include <stdio.h>
    
    int main() {
    	int var;
    	int *ptr;
    	int **pptr;
    	
    	var = 3000;
    	
    	ptr = &var;
    	
    	pptr = &ptr;
    	
    	printf("Value of var = %d
    ", var );
    	printf("Value available at *ptr = %d
    ", *ptr );
    	printf("Value available at **pptr = %d
    ", **pptr);
    	
    	printf("
    ");
    	
    	printf("Address of var: &var = %p
    ", &var);
    	printf("Address of var: ptr = %p
    ", ptr);
    	printf("Address of var: &(*ptr) = %p
    ", &(*ptr));
    	printf("Address of var: *pptr = %p
    ", *pptr);
    	
    	printf("
    ");
    	
    	printf("Address of ptr: &ptr = %p
    ", &ptr);
    	printf("Address of ptr: pptr = %p
    ", pptr);
    	printf("Address of ptr: &(*pptr) = %p
    ", &(*pptr));
    	
    	printf("
    ");
    	
    	printf("Address of pptr: &pptr = %p
    ", &pptr);
    	
    	return 0;
    }
    

    Outputs:

    Value of var = 3000
    Value available at *ptr = 3000
    Value available at **pptr = 3000
    
    Address of var: &var = 0x7ffff21a1b64
    Address of var: ptr = 0x7ffff21a1b64
    Address of var: &(*ptr) = 0x7ffff21a1b64
    Address of var: *pptr = 0x7ffff21a1b64
    
    Address of ptr: &ptr = 0x7ffff21a1b68
    Address of ptr: pptr = 0x7ffff21a1b68
    Address of ptr: &(*pptr) = 0x7ffff21a1b68
    
    Address of pptr: &pptr = 0x7ffff21a1b70
    

     

  • 相关阅读:
    数据库实例: STOREBOOK > 用户 > 编辑 用户: SYSTEM
    数据库实例: STOREBOOK > 用户 > 编辑 用户: SYSMAN
    数据库实例: STOREBOOK > 用户 > 编辑 用户: SYS
    [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序(转)
    面试常考知识
    TCP、UDP和HTTP详解
    TCP流量控制与拥塞控制
    主键与唯一性索引
    进程与线程的区别
    WEB中会话跟踪
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/11161764.html
Copyright © 2011-2022 走看看