`

C语言 int** 二重指针的理解

 
阅读更多
#include <stdio.h>    
#include <stdlib.h>

 /*&根据值找地址
     *根据地址找值              
    */  
f(int** q){//传入的是指针的地址 
    int i = 3; 
    printf("子函数 i的地址 %#X\n",&i); 
    // *q   代表的就是p变量  
    *q = &i; //*q指向是p的值  也就是把p地址(比如&p=220005)所指向的值(也即是p)赋成了i的地址/ 
} 
/**
   使用指针的时候 不可以访问已经被系统回收掉的数据  
   子函数执行完毕后 子函数里面所有的局部变量都会别系统回收  
*/

 main() 
{   
        
        
        // 希望在主函数里面去使用子函数里面的变量 i 
        
        // f(); 
        
        // 希望在主函数里面得到子函数 里面int i变量的地址 
        
        int* p ; //存放子函数f中 int i的地址的一个变量
        
         
        f(&p); //把p(比如&p=220005)的地址传入了f 
         
       // printf("主函数 i的地址 %#X\n",p); 
        
       // printf("i的值为 %d\n",*p); 
        
       system("pause");    // 调用windows下系统的命令 让程序暂停执行  方便观察程序的执行结果  
          
          
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics