27届转码Day5
- 一个很重要的:加减会溢出,异或不会溢出。
- 函数:function:功能(函数应该完成某种功能、职责、任务)
1. 函数的结构:
- 函数声明:bool is_prime(int n);
- 函数体:bool is_prime(int){...}
- 函数调用: is_prime(34)
- 函数调用和赋值: bool flag = is_prime(19)
- 函数指针:is_prime;
- C语言是面向过程(函数)的语言:函数是c语言程序的基本构建单位:c语言程序是由函数之间的相互调用组成的。
- 参数传递:形式参数,实际参数。参数传递:实参——>形参。C语言没有引用,只有值传递(复制)。main函数是栈里面最后的一个层,只有等其他所有的执行完了才是main函数出栈。
1. 注意:调用的函数有自己的数据副本,他会修改被调函数中的参数,但不会影响主调函数的值。
2. 注意:如果想要通过被调函数中的参数来修改,主调函数的值,那么解决办法就是:指针。(指针就是地址,原本参数传递的是值,指针因为是地址,所以就能实现上述功能)
3. 注意特例:数组作为参数时,会退化成指向该数组第一个元素的指针。(发生了类型转换)
[图片]
4. 这个退化有利右弊:
- 优点:1避免大量数据的辅助 2可以在被调函数中修正盖主调函数的值 3让函数调用更灵活
- 缺点:1丢失了长度信息
- 局部变量:定义在函数里面的变量
1. 作用域:可以引用变量的区域,
2. 块作用域:生命周期,存储期限
3. 一般局部变量都放在栈里面,因为他是自动存储期限,随着栈帧入栈开始,栈帧出栈消亡;动态存储期限malloc开始,free结束;静态存储期限:永久!比如数据代码。怎么把默认为自动存储期限的变量变为静态的呢?static关键字!
4. 静态变量(static):静态存储期限的变量可以存储上一次函数调用的状态。静态变量只会初始化一次,即便后面在初始化相同的名字变量,他地址值还是不会便。相较于动态(每次都会变)
5. 存储期限作用于运行,作用域作用域编译
- 外部变量(全局变量)
1. 作用域:从变量定义开始,到文件末尾。
2. 存储期限:静态存储期限。
- 问题:static的局部变量和外部变量有什么区别?
- 作用域不同。tips:尽量避免使用外部变量(debug定位问题)
- 递归:
1. 递归会导致大量的无效计算。比如斐波那切数列。如果要用算法实现非波那切的话一定要用循环的方法。
2. 常用面试题:汉诺塔,斐波那契。n皇后(但是实际当中一般都不用递归)
- 递归三问;
- 到底什么情况下可以考虑递归?问题具有递归结构,也就是能用数学归纳法,同时大问题可以分解为子问题。
- 是否使用递归?如果不存在重复计算的问题可以使用递归。
- 如何写递归?边界条件,递归公式。
#秋招#
- 函数:function:功能(函数应该完成某种功能、职责、任务)
1. 函数的结构:
- 函数声明:bool is_prime(int n);
- 函数体:bool is_prime(int){...}
- 函数调用: is_prime(34)
- 函数调用和赋值: bool flag = is_prime(19)
- 函数指针:is_prime;
- C语言是面向过程(函数)的语言:函数是c语言程序的基本构建单位:c语言程序是由函数之间的相互调用组成的。
- 参数传递:形式参数,实际参数。参数传递:实参——>形参。C语言没有引用,只有值传递(复制)。main函数是栈里面最后的一个层,只有等其他所有的执行完了才是main函数出栈。
1. 注意:调用的函数有自己的数据副本,他会修改被调函数中的参数,但不会影响主调函数的值。
2. 注意:如果想要通过被调函数中的参数来修改,主调函数的值,那么解决办法就是:指针。(指针就是地址,原本参数传递的是值,指针因为是地址,所以就能实现上述功能)
3. 注意特例:数组作为参数时,会退化成指向该数组第一个元素的指针。(发生了类型转换)
[图片]
4. 这个退化有利右弊:
- 优点:1避免大量数据的辅助 2可以在被调函数中修正盖主调函数的值 3让函数调用更灵活
- 缺点:1丢失了长度信息
- 局部变量:定义在函数里面的变量
1. 作用域:可以引用变量的区域,
2. 块作用域:生命周期,存储期限
3. 一般局部变量都放在栈里面,因为他是自动存储期限,随着栈帧入栈开始,栈帧出栈消亡;动态存储期限malloc开始,free结束;静态存储期限:永久!比如数据代码。怎么把默认为自动存储期限的变量变为静态的呢?static关键字!
4. 静态变量(static):静态存储期限的变量可以存储上一次函数调用的状态。静态变量只会初始化一次,即便后面在初始化相同的名字变量,他地址值还是不会便。相较于动态(每次都会变)
5. 存储期限作用于运行,作用域作用域编译
- 外部变量(全局变量)
1. 作用域:从变量定义开始,到文件末尾。
2. 存储期限:静态存储期限。
- 问题:static的局部变量和外部变量有什么区别?
- 作用域不同。tips:尽量避免使用外部变量(debug定位问题)
- 递归:
1. 递归会导致大量的无效计算。比如斐波那切数列。如果要用算法实现非波那切的话一定要用循环的方法。
2. 常用面试题:汉诺塔,斐波那契。n皇后(但是实际当中一般都不用递归)
- 递归三问;
- 到底什么情况下可以考虑递归?问题具有递归结构,也就是能用数学归纳法,同时大问题可以分解为子问题。
- 是否使用递归?如果不存在重复计算的问题可以使用递归。
- 如何写递归?边界条件,递归公式。
#秋招#
全部评论
y1s1,你现在学不是c吗? 学c++就应该看c++的教材
感觉速度还是太慢了。
相关推荐
只会按tab的bug...:这不是程序员的锅啊 别转移矛盾
点赞 评论 收藏
分享
10-31 21:01
武汉大学 Java
lulululula...:仅仅按我个人的经历来看,大厂其实很少特别关注微服务,一般对微服务架构,限流熔断降级的概念了解就行,简历不写也不容易被问到。现在这个势头不如站点agent应用,比如做做mcp,rag,r对话agent,记忆管理之类的,说不定可以蹭上一波热度,进公司虽然可能还是干agent的杂活,但是可以学一学组内的业务和技术了 点赞 评论 收藏
分享