导航

浅谈二级指针的使用(C/C++)

Posted on 2013-07-13 10:34  iphone9  阅读(676)  评论(0)    收藏  举报
 1 //二级指针.cpp
 2 #include <iostream>
 3 using namespace std;
 4 
 5 void change_val(int **p)  
 6 {  
 7     static int new_val[3] = {4, 5, 6}; // [2]  
 8     *p = new_val;  
 9 }  
10 
11 int main()
12 {    
13     int i;
14     int val[3] = {1, 2, 3};  
15     int *p = val;              // [1]  
16     
17     for (i = 0; i < 3; i++,p++)
18     {
19         cout<<"*p:"<<*p<<endl;
20     }
21     
22     change_val(&p); 
23     cout<<"----"<<endl;
24     for (i = 0; i < 3; i++,p++)
25     {
26         cout<<"*p:"<<*p<<endl;
27     }
28 }

第一次编写段二级指针代码的时候,开始是定义数组为字符型,由于第一次没有一用循环输出,只是输出了首地址的数,
而首地址原来我是用 1,2为两个数组的首地址,结果输出的都是一张笑脸。
我当时误以为二级指针没有起到改变地址的作用,后来仔细一看才发现两张笑脸颜色是有区别的。
后来就改为了数字数组,这样容易区分。而且输出全部的数组内容。
值得一提的是 子函数里面的数组要定义为静态的,否则函数执行出了子函数,就会释放动态数组。
如图:

 

 

小结:

 使用二级指针,也就是指针的指针时,其中一级指针是存放的是一个地址,二级指针存放的是一级指针的地址。相信大家看程序代码就能看懂二级指针的用法了。


by : null  
2013年7月13日10:33:45