
C语言
文章平均质量分 89
记录学习C语言的知识点,同时帮助各位感兴趣的同学以此为帮助进行学习
熙曦Sakura
985大连理工大学计算机专业本科生,分享我的学习心得,欢迎大家批评指正
展开
-
【C语言】常见概念
C语言常见概念原创 2024-08-19 07:49:29 · 924 阅读 · 0 评论 -
【C语言】数据类型和变量
数据类型介绍C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。下面盘点一下C语言提供的各种数据类型,本章节主要探讨内置数据类型。printf() 的作用是将参数、文本输出到屏幕。它名字里面的 f 代表 format (格式化),表示可以定制输出文本的格式。return 0;原创 2024-08-20 12:20:59 · 1335 阅读 · 0 评论 -
【C语言】分支
C语言是结构化的程序设计语言,这里的结构指的是,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使用 if 、 switch 实现分支结构,使用 for 、 while 、 do while 实现循环结构。原创 2024-08-21 09:01:31 · 804 阅读 · 0 评论 -
【C语言】循环
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使用 if 、 switch 实现分支结构,使用 for 、 while 、 do while 实现循环结构。原创 2024-08-25 11:05:27 · 1417 阅读 · 0 评论 -
【C语言】数组
前面学习的数组被称为一维数组,数组的元素都是内置类型的,如果我们把一维数组做为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组。有一个比较迷惑的点,变长数组的意思是数组的大小是可以使用变量来指定的,在程序运行的时候,根据变量的大小来指定数组的元素个数,而不是说数组的大小是可变的。从输出的结果来看,每一行内部的每个元素都是相邻的,地址之间相差4个字节,跨行位置处的两个元素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以。原创 2024-08-26 11:42:41 · 1237 阅读 · 0 评论 -
【C语言】函数(一)
了解了库函数,我们的关注度应该聚焦在自定义函数上,自定义函数其实更加重要,也能给程序员写代码更多的创造性。原创 2024-08-27 08:02:20 · 1194 阅读 · 0 评论 -
【C语言】函数(二)
一般我们在使用函数的时候,直接将函数写出来就使用了。比如:我们要写一个函数判断一年是否是闰年。//判断⼀年是不是闰年return 1;if(r == 1)printf("闰年\n");elseprintf("⾮闰年\n");return 0;这种场景下是函数的定义在函数调用之前,没什么问题。if(r == 1)printf("闰年\n");else。原创 2024-08-28 10:14:56 · 1029 阅读 · 0 评论 -
VS实用调试技巧
当程序员写完代码,测试再对程序进⾏测试,直到程序的质量符合交付给用户使用的标准,这个时候就会设置为 release ,编译产生的就是 release 版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。所以这个题目是和环境相关的。程序员在写代码的时候,需要经常性的调试代码,就将这⾥设置为 debug ,这样编译产⽣的是Debug 版本的可执⾏程序,其中包含调试信息,是可以直接调试的。试,也可能是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码,重新测试。原创 2024-08-08 18:29:08 · 1019 阅读 · 0 评论 -
【C语言】函数递归详解
在计算第40个斐波那契数的时候,使⽤递归⽅式,第3个斐波那契数就被重复计算了39088169次,这些计算是非常冗余的。当我们n输⼊为50的时候,需要很长时间才能算出结果,这个计算所花费的时间,是我们很难接受的,函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归。递归的思路就是把⼀个较⼤的问题,转换为⼀个与原问题相似,但规模较⼩的问题来求解的。递归程序会不断的展开,在展开的过程中,我们很容易就能发现,在递归的过程中会有重复计。斐波那契数的问题通过是使⽤递归的形式描述的。原创 2024-08-07 19:36:25 · 460 阅读 · 0 评论 -
指针(一)
下面我也会持续分享有关指针的见解!!!原创 2024-08-11 18:21:55 · 1269 阅读 · 0 评论 -
指针(二)
下面我也会持续分享有关指针的见解!!!原创 2024-08-12 18:26:26 · 1064 阅读 · 0 评论 -
指针(三)
那么在数组传参的时候,传递的是数组名,也就是说本质上数组传参本质上传递的是数组首元素的地址。同理arr[i] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是转换成首元素的地址+偏移量求出元素的地址,然后解引用来访问的。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型一维数组,parr[i][j]就是整型一维数组中的元素。• &数组名,这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)这时候有同学会有疑问?原创 2024-08-13 11:48:16 · 1241 阅读 · 0 评论 -
指针(四)
详细介绍字符指针变量,数组指针变量,二维数组传参的本质,函数指针变量,函数指针数组等知识点,以及采用转移表实现计算器的一般功能。原创 2024-08-14 18:31:28 · 840 阅读 · 0 评论 -
回调函数(附带qsort函数的模拟实现)
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。使用回调函数,模拟实现qsort(采用冒泡排序)。回调函数就是一个通过函数指针调用的函数。原创 2024-08-15 08:39:39 · 322 阅读 · 0 评论 -
【C语言】字符函数和字符串函数
详细介绍字符和字符串的相关实用函数以及相关模拟实现原创 2024-08-16 08:17:44 · 1001 阅读 · 0 评论 -
【C语言】操作符详解(内带进制换算以及位操作符详解)
进制示例:15的2进制:111115的8进制:1715的10进制:1515的16进制:F重点介绍⼀下二进制:首先我们还是得从10进制讲起,其实10进制是我们生活中经常使用的,我们已经形成了很多尝试:• 10进制中满10进1• 10进制的数字每⼀位都是0~9的数字组成其实二进制也是⼀样的• 2进制中满2进1• 2进制的数字每⼀位都是0~1的数字组成。原创 2024-08-09 17:14:13 · 1157 阅读 · 0 评论 -
【C语言】内存函数
详细介绍C语言四大常用函数的功能,使用,以及部分模拟实现原创 2024-08-17 05:35:17 · 784 阅读 · 0 评论 -
【C语言】sizeof 和 strlen
sizeof(数组名),这里的数组名表⽰整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。除此之外所有的数组名都表示首元素的地址。原创 2024-08-15 09:26:40 · 379 阅读 · 0 评论 -
自定义类型:结构体
详细介绍C语言结构体类型原创 2024-08-18 12:56:30 · 863 阅读 · 0 评论 -
自定义类型:联合和枚举
上述的结构其实设计的很简单,用起来也方便,但是结构的设计中包含了所有礼品的各种属性,这样使得结构体的大小就会偏大,比较浪费内存。联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。在C语言中是可以的,但是在C++是不行的,C++的类型检查比较严格。代码1输出的三个地址一模一样,代码2的输出,我们发现将i的第4个字节的内容修改为55了。这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。原创 2024-08-19 06:01:32 · 875 阅读 · 0 评论 -
【C语言】动态内存管理
• 数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整,但是对于空间的需求,不仅仅是上述的情况。• 有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的使用内存,我们一定会对内存的大小做灵活的调整。当是情况2 的时候,原有空间之后没有足够多的空间时,扩展的方法是:在堆空间上另找⼀个合适大小的连续空间来使用。• 包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。原创 2024-08-29 12:03:33 · 1223 阅读 · 0 评论 -
【C语言】文件操作
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。函数名功能(适用于)fgetc字符输入函数 ( 所有输入流)fputc字符输出函数( 所有输出流)fgets文本行输入函数(所有输入流)fputs文本行输出函数 ( 所有输出流)fscanf格式化输入函数 (所有输入流)fprintf格式化输出函数 ( 所有输出流)fread二进制输入 (文件)fwrite二进制输出 (文件)fgetc用于读取文件内的单个字符。原创 2024-09-01 13:27:39 · 1777 阅读 · 0 评论 -
【C语言】编译和链接
我们在 test.c 文件中每一次使用 Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个文件是单独编译的,在编译器编译 test.c 的时候并不知道 Add 函数和 g_val变量的地址,所以暂时把调用Add 的指令的目标地址和 g_val 的地址搁置。将源代码程序被输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列的记号(关键字、标识符、字面量、特殊字符等)。链接是一个复杂的过程,链接的时候需要把一堆文件链接在一起才生成可执行程序。原创 2024-09-03 13:54:35 · 1155 阅读 · 0 评论