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
浙公网安备 33010602011771号