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
原文链接: https://www.cnblogs.com/nulln/p/3187697.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/95664
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!