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是栈上的内存,使用指针做函数参数,实现了在被动函数中可以修改主调函数中申请的栈上的内存,从而实现了接口的封装和设计。 |

相关推荐
stm32 菜鸟22 分钟前
nucleo-f411re学习记录-12,Wifi模块ESP8684
学习
stm32 菜鸟2 小时前
nucleo-f411re学习记录-9,双轴XY摇杆传感器
学习
南子北游2 小时前
Python学习(基础语法1)
开发语言·python·学习
张健11564096483 小时前
使用信号量限制并发数量
开发语言·c++
jc06203 小时前
6.1云原生之Docker
c++·docker·云原生
上弦月-编程3 小时前
递归实现C语言菱形图案打印
c语言
Mrlxl.cn3 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
Atri厨4 小时前
X86存储器的段描述符学习随笔
学习
星幻元宇VR4 小时前
VR航空航天科普设备助力航天知识普及
人工智能·科技·学习·安全·vr·虚拟现实
d111111111d4 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法