- 博客(21)
- 收藏
- 关注
原创 函数的递归和迭代
只需少量的程序就可描述出解题过程中所需的多次重复计算,大大减少程序的代码量。通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。★:递归的两个必要条件:1、存在限制条件,满足限制条件时,递归不再继续。迭代:有些用递归来做可能效率低下,可以考虑用迭代去做,比如斐波那契数列。栈区:局部变量、函数的形参 每一次函数的调用都会在栈区申请空间。一个过程或函数在其定义或说明中国直接过间接调用自身的一种方法。%d打印有符号的数(有正负),%u 打印无符号的数。:程序调用自身的编程技巧。
2024-02-19 11:31:46 191 1
原创 函数的声明和定义
1.函数放main后面时,必须要在main前面做一个函数的声明,否则在走main时里面引用的语句无法走。函数的声明:告诉编译器一个函数叫什么,参数是什么,返回类型是什么,但是具体实现要在函数定义里面。#include "Add.h" 包含头文件的意义在于实现函数声明。所以包括一个头文件写声明,一个源文件写函数,一个源文件写main。自己定义的头文件用 #include "Add.h"函数的定义:指函数的具体实现,交代函数的功能实现。函数的声明,为什么要拆分成声明和定义?
2024-02-18 13:03:28 121
原创 函数的一些tip
需要返回值却不写返回值类型时,默认返回值为int;但是建议标明返回值类型。int main(void) //明确说明,main不需要参数。相应的,标明有返回值的,最后一定要写返回值。printf函数返回值是打印了几个字符。函数可以嵌套调用,但不可以嵌套定义。不需要返回值时需写上void。本质上main函数是有参数的。
2024-02-05 13:37:18 203 1
原创 函数的应用
5.布尔类型:用来表示真假的变量。所以在函数内部计算一个函数参数部分的数组的元素个数时不靠谱的;头文件是 #include<stdbool.h>1.高内聚,低耦合:函数最好单一,这样可以应用到的机会就多。4.数组传参实际上传的时数组首元素的地址,而不是整个数组;2.形参和实参的名字可以相同也可以不同。3.函数返回值自己需要怎么样就怎么设计。看上去时数组,本质上是指针。
2024-02-03 18:21:39 91 1
原创 tip:函数
1.实参(真实传给函数的参数):常量、变量、表达式、函数,无论何种类型的量,在进行调用时,都必须有确定的值;2.形参(函数名后括号中的变量,只在函数被调用时才实例化):旨在调用函数时才有效,出函数就销毁。1.什么时候需要传地址:如果原来的数据不需要做改动就不需要传地址,否则就必须要传地址。1.传值调用:传递变量本身,函数形参和实参分别占有不同内存块,对形参的修改不影响实参;2.传址调用:传递变量地址,函数内部直接操作函数外部变量。3.形参实例化之后其实相当于实参的一份临时拷贝。
2024-01-27 11:24:38 121
原创 函数相关知识点
库函数:IO函数、字符操作函数、内存操作函数、时间/日期操作函数、数学函数、其他。自定义函数:返回值类型(如果不需要返回值,则输入void)+函数名+参数。1.函数即子程序,相较于其他代码,具备相对独立性。***:(x>y?x:y),xy取较大值。一个工程只能有一个main函数。2.分为库函数和自定义函数。
2024-01-26 18:11:59 128 1
原创 小知识:猜数字游戏
数组传参传递的是数组首元素的地址随机产生一个数字:srand((unsigned int)time(NULL));时间戳int ret=rand()%100+1;只需调用一次,需要用到strand stdlib.h头文件time time.h头文件int *p=NULL 空指针
2024-01-18 15:47:45 357 1
原创 【无标题】
而字符串类型数组用strlen计算最大小下标时,需要减1,因为第一个下标是0,因为它计算的是\0前面的字符数,所以\0不计入下标。对于字符串数组,sizeof计算数组最大下标时需要减2,因为第一个数的下标是0,而且最终有一个\0字符。system("cls") 库函数,执行系统命令 头文件是#include<stdlib.h>Sleep(1000) 停顿1秒 头文件是#include<windows.h>对于整型数组,sizeof计算数组最大下标时需要减1,因为第一个数的下标是0;
2024-01-16 15:52:44 318 1
原创 【无标题】for循环
所以while循环中会死循环,而for循环中可以进行下去;for循环因为初始化(整个循环只初始化一次),判断,调整放一起,方便进行编写,所以是最常用地条件循环;i++) int尽量不要在for循环中定义,因为不是所有编译器都支持;i++),初始化不要随便省略,因为初始化只有一次,不写可能不可控;break和continue只针对当前循环一个循环,循环外的不影响;break在while循环和for循环中都是直接跳出整个循环;for循环判断省略,意味着判断恒成立,形成死循环;
2024-01-15 14:39:34 443 1
原创 结构语句 if while switch
while循环中的continue:跳过本次循环后面的代码,直接去判断部分进行下一次循环的判断。转向语句 break;每个case后面加一个break,在结束时加一个default。switch:根据表达式的值进去,但是出去得靠break。表达式必须是整型, case 后面必须是整型常量。循环结构 while;while循环中的break:永久地终止整个循环。写成5==num 而不是num==5。else和离的最近的if匹配。变量的命名 有意义,规范。0表示假 非0表示真。
2024-01-09 15:53:48 448
原创 知识点:指针
64位机器上的地址是64个比特,也就是8个字节,所以指针变量是8个字节。指针变量的大小取决于一个地址存放的时候需要多大空间。不管是什么类型的指针,都是在创建指针变量。指针变量是用来存放地址的。
2024-01-08 14:32:28 323
原创 知识点 指针
解引用操作符,意思是通过p中存放的地址,找到p所指向的对象,*p就是p指向的对象。内存划分为一个个内存单元(每个内存单元都有一个编号,一个内存单元的大小时1byte)* 说明p是指针变量,int说明p指向的对象是int类型,p是指针变量。int* p =&a;存放指针(地址)的变量就是指针变量。32位电脑 2^32个地址,可以管理2^32个字节=4GB。内存单元编号==地址==指针。64位电脑可以管理8GB。
2024-01-06 21:15:02 335
原创 知识点typedef/static/define
修饰全局变量:全局变量具有外部链接属性,static修饰全局变量时,全局变量的外部链接属性变成内部链接属性,其他源文件就不能再使用到全局变量了。static 修饰局部变量:除了作用域后不销毁,因为将变量的存储位置从栈区(局部变量会销毁)变到了静态区(静态变量不会销毁)定义宏,宏有参数,参数无类型 define ADD(x,y) ((x)+(y))define:定义标识符常量 define NUM 100。.h 头文件 (函数的声明、类型的声明、头文件的包含).c 源文件 (函数的实现)
2024-01-06 16:14:58 352 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人