鱼C论坛

 找回密码
 立即注册
查看: 2205|回复: 0

[技术交流] 指针铁律2

[复制链接]
发表于 2017-7-11 17:32:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
铁律2:通过*p/*p++ 来改变变量的值是指针存在的最大意义
1)两码事:指针变量和它指向的内存块变量
2)条件反射:指针指向某个变量,就是把某个变量地址否给指针
3)*p间接赋值成立条件:3个条件
a)2个变量(通常一个实参,一个形参)
b) 建立关系,实参取地址赋给形参指针
c) *p形参去间接修改实参的值
Int iNum = 0; //实参
int *p = NULL;
p = &iNum;
iNum = 1;
*p =2 ; //通过*形参 == 间接地改变实参的值
*p成立的三个条件:

4)引申: 函数调用时,用n指针(形参)改变n-1指针(实参)的值。
//改变0级指针(int iNum = 1)的值有2种方式
//改变1级指针(eg char *p = 0x1111 )的值,有2种方式
//改变2级指针的(eg char **pp1 = 0x1111 )的值,有2种方式

//函数调用时,形参传给实参,用实参取地址,传给形参,在被调用函数里面用*p,来改变实参,把运算结果传出来。
//指针作为函数参数的精髓。

间接赋值的应用场景分析
//C++多态实现的技术推演
//AOP切面编程 (java 2-3),3
//1定义一个变量(通常是实参) 定义一个变量(通常是形参)
//2建立联系 把实参取地址取地址传给形参
//3*p形参,就间接地修改了是实参的值。

//*p = 10;

//间接赋值应用场景概念建立
//1 在一个函数里面
//*p1++ = *p2++  //完成内存块的copy
//2 在两个函数之间,指针做函数参数把运算结果给甩出来
//123
//12        3
//1                23
间接赋值的推论=====指针做函数参数

        //在函数调用的时候
        //用1级指针(形参)去改变了0级指针(实参)的值  (通过*p去间接修改了实参的在值)

        //用2级指针(形参)去改变了1级指针(实参)的值  (通过*p去间接修改了实参的在值)
        //用3级指针(形参)去改变了2级指针(实参)的值  (通过*p去间接修改了实参的在值)
        //用n级指针(形参)去改变了n-1级指针(实参)的值  (通过*p去间接修改了实参的在值)

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 10:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表