- 博客(19)
- 收藏
- 关注
原创 预处理(笔记)
在编译⼀个程序的时候我们如果要将⼀条语句(⼀组语句)编译或者放弃是很⽅便的。因为我们有条 件编译指令。⼀般来讲函数的宏的使⽤语法很相似。所以语⾔本⾝没法帮我们区分⼆者。⽐如说: 调试性的代码,删除可惜,保留⼜碍事,所以我们可以选择性的编译。2. 函数名不要全部⼤写。
2024-09-26 23:02:41
272
原创 指针解析(二)
所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 型就是数组指针类型 int [5] ,所以第⼀⾏的地址的类 int(*)[5]。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀ ⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。⾸先我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维 数组的每个元素是⼀个⼀维数组。我们类⽐⼀下,整型数组,是存放整型的数组,
2024-09-25 22:28:51
851
原创 文件 详解!!!
函数名功能适⽤于fgetc字符输入函数所有输⼊流fputc字符输出函数所有输⼊流fgets文本行输入函数所有输⼊流fputs文本行输出函数所有输⼊流fsancf格式化输入函数所有输⼊流fprintf格式化输出函数所有输⼊流fread二进制输入函数文件fwrite二进制输出函数文件上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀ 般指适⽤于标准输出流和其他输出流(如⽂件输出流)。
2024-09-24 11:39:50
633
原创 动态内存分配
但是上述的开辟空间的⽅式有两个特点:• 空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知 道,那数组的编译时开辟空间的⽅式就不能满⾜了.C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。
2024-09-22 21:12:47
733
原创 结构体详解
为了让结构变量的成员有确定的值,可以利用以下两种方式:第一,在定义该结构变量的时候对它初始化,初始化结构变量时是把该变量的成员作为一个整体进行的:第二,单独访问结构变量的某个成员,然后对它赋值。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。2 左右花括号“{}”括起来的部分是结构定义体,可以在其中声明结构成员,或者说在结构定义体中声明的变量,都是该结构的成员。当左边是结构变量时,用圆点运算符;
2024-09-21 15:12:19
525
原创 位操作符&、|、^、~
例:假设在C语言中,有两个整数变量a = 12和b = 5,表达式a & b的结果是什么?例:假设在C语言中,有两个整数变量x = 9和y = 3,表达式x ^ y的结果是什么?(从最低位(最右侧位)开始,逐位进行取反操作。输出 为 0 1 0 0=4。9的二进制 1 0 0 1。3的二进制 0 0 1 1。输出为1 0 1 0=10。输出为1 1 0 1=13。位操作符:&、|、^、~将一个数的二进制表达的。
2024-09-21 15:10:17
377
原创 字符函数与其模拟实现
1 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含'\0')1 第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字 ◦。3 ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。3 第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字。2 会将源字符串中的 '\0' 拷⻉到⽬标空间。2 参数指向的字符串必须要以 '\0' 结束。2 第⼀个字符串等于第⼆个字符串,则返回0。1 源字符串必须以 '\0' 结束。1 源字符串必须以 '\0' 结束。
2024-09-15 22:48:43
396
原创 c语言qsort函数解析
使用qsort函数排序的好处就是可以给整型、浮点型、字符串、结构体等排序。1 指向要排序的第一个元素的指针(地址)qsort的库函数是4 函数指针,指向各种类型的函数。
2024-09-07 20:40:30
351
原创 c语言函数递归详解
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰int main()main();//main函数中⼜调⽤了main函数return 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问 题,代码最终也会陷⼊死递归递归的思想把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再 被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会。
2024-04-28 23:44:16
1059
1
原创 c语言 数组
数组是⼀组相同类型元素的集合;* 数组中存放的是1个或者多个数据,但是数组元素个数不能为0* 数组中存放的多个数据,类型是相同的维数组创建的基本语法如下:type arr_name[常量值];存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型• type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃ 定义的类型• arr_name 指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。
2024-04-19 22:38:14
1475
1
原创 c语言中的switch语句
原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。default 只能放在最后吗?上述的代码中,我们要注意的点有: 1. case 和后边的数字之间必须有空格 2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
2024-04-16 20:50:56
661
原创 深入研究找素数的思路
判断一个数是否为素数,当被除数与除数确定后,还要进行判断,数学上结果肯定是我们自己判断(它是素数与否)思考:定义了三个变量,i,j,flag,为什么要定义后两个变量只定义i与j不行吗。if (i % j == 0)//表明i不是素数。即被除数与除数,当这两个自由度被确定后,我们显然知道被除数是否是素数。我们想打印的是素数,但在两个变量的情况下我们只能打印非素数的数。所以我们还需要定义一个flag来表示判断结果的真假。flag存储的就是1(素数)和0(非素数)()/()=结果(商)()/()=结果(商)
2024-04-12 16:09:02
782
原创 c语言中的占位符
上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。%c 不忽略空⽩字符,总是返 回当前第⼀个字符,⽆论该字符是否为空格。如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表 ⽰跳过零个或多个空⽩字符。scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。• %Lf : long double 类型浮点数。• %lf : double 类型浮点数。• %f : float 类型浮点数。• %s :字符串。
2024-04-10 22:54:24
725
1
原创 printf函数
12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位, 所以 123.45 输出结果的头部会添加2个空格。输出⼩数时,有时希望限定⼩数的位数。举例来说,希望⼩数点后⾯只保留两位,占位符可以写 成 %.2f 或者%.2lf,三位就是%.3f。%5d表示为这个占位符的宽度是5位,不满5为则用空格代替,输出的值默认右对齐。如果希望改为左对齐,则把%5d改为%-5d。上例输出结果为0.50。
2024-04-10 22:53:13
328
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅