0004.C/C++学习笔记4

0031 、指针的精华:间接赋值

|-------------------------------------------------------------------------------------------|
| 指针的精华:间接赋值,C语言特有的现象。 |
| 通过指针做函数参数,通过间接赋值的方式,将一个函数中的运算结果甩出来。在主调函数中定义变量,在被调函数中通过*p来修改这个变量。通过这个方法,可以做模块的划分,接口的封装设计。 |
| 函数调用时,用实参取地址,传给形参,在被调用函数里面用*p,来改变实参,把运算结果传出来。 指针作为函数参数的精髓。 C语言特有的想象,是C语言的精华 |
| 指针做函数参数,间接赋值 ---->接口的封装设计----->模块的划分---->软件的分层 |

0032 、间接赋值

|-------------------------------------------------------------------------------------------------------------------------------------------|
| 间接赋值是指针存在的最大意义。 |
| 间接赋值的应用场景: 场景1:在一个函数内使用 场景2:在两个函数之间使用,即指针做函数参数 |
| 间接赋值成立的三个条件 条件1:定义1个变量(实参) //定义1个变量(形参) 条件2:建立关联,把实参取地址传给形参 条件3:形参去间接地的修改了实参的值 |
| 间接赋值条件应用深入分析:即 三个条件的组合,分别产生三种很重要的语法现象 条件123都写在一个函数里面,间接赋值应用场景1 条件12写在一个函数里面,条件3写在另外一个函数里面,间接赋值应用场景2 条件1 写在一个函数里面,条件23写在另外一个函数里面,间接赋值应用场景3 |

0033 、间接赋值应用场景 1 :在一个函数内使用

|----------------------------------------------------------------------------|
| 间接赋值应用场景1:在一个函数内使用 |
| |

0034 、间接赋值应用场景 2 :指针做函数参数

|--------------------------------------------------------------------------------------------------------------------|
| 间接赋值应用场景2:在两个函数之间使用,即指针做函数参数 |
| |
| 在函数调用的时候 用1级指针形参,去间接修改了0级指针(实参)的值。 用2级指针形参,去间接修改了1级指针(实参)的值。 用3级指针形参,去间接修改了2级指针(实参)的值。 用n级指针形参,去间接修改了n-1级指针(实参)的值。 |

0035 C/C++ 领域值得技术推演关键点

|----------------------------------------------------------------------------------------------------|
| C/C++领域值得技术推演的关键点: 1、*p,指针(一级指针、二级指针)做函数形参,间接赋值,即指针做输入输出 2、C++多态,多态的本质:函数指针做函数参数 1. 回调函数 2. AOP编程 |

0036 C 风格字符串

|----------------------------------------------------------------------------|
| C语言里面没有字符串这种类型,是通过字符数组来模拟字符串。 C风格字符串是以零结尾的字符串。 |
| |
| char buf4[] = "abcdefg"; // 默认自动的把\0追加到buf4中,让buf4变成以\0结尾的字符串。 |
| |
| printf函数默认按照C风格的字符串去打印以buf2的内存首地址开始的数据,直到碰到\0为止。 |
| |
| 注意:sizeof是对数组类型进行大小测量,包括了\0,strlen是返回字符串的长度,不包括\0 |

0037 [] * 的本质

|----------------------------------------------------------------------------|
| |

0038、一级指针的内存四区模型

|----------------------------------------------------------------------------|
| |
| strcpy函数:会自动补充\0 C语言可以在栈上存放字符串,可以在堆上存放字符串,可以在全局区存放字符串。 |

0039 return 返回值

|------------------------------------------------------|
| 1. 当return简单类型时,复制a作为返回值。 2. 在C++中,当return类时,需要详细考虑。 |

0040、两个指针指向同一块内存空间

|--------------------------------------------------------------------------------------------------------------------|
| |
| 当copy_str函数调用时,实参p和形参from指向同一块内存空间,实参p2和形参to指向同一块内存空间。p2是栈上的内存,使用指针做函数参数,实现了在被动函数中可以修改主调函数中申请的栈上的内存,从而实现了接口的封装和设计。 |

相关推荐
lxl13075 小时前
学习C++(5)运算符重载+赋值运算符重载
学习
zhuqiyua5 小时前
第一次课程家庭作业
c++
只是懒得想了5 小时前
C++实现密码破解工具:从MD5暴力破解到现代哈希安全实践
c++·算法·安全·哈希算法
m0_736919106 小时前
模板编译期图算法
开发语言·c++·算法
玖釉-6 小时前
深入浅出:渲染管线中的抗锯齿技术全景解析
c++·windows·图形渲染
【心态好不摆烂】6 小时前
C++入门基础:从 “这是啥?” 到 “好像有点懂了”
开发语言·c++
dyyx1116 小时前
基于C++的操作系统开发
开发语言·c++·算法
AutumnorLiuu6 小时前
C++并发编程学习(一)——线程基础
开发语言·c++·学习
m0_736919106 小时前
C++安全编程指南
开发语言·c++·算法
阿猿收手吧!6 小时前
C++ std::lock与std::scoped_lock深度解析:从死锁解决到安全实践
开发语言·c++