
c语言知识点专栏
文章平均质量分 86
里面都是对c的知识点讲解,里面会有作者的个人理解,(所以可能有时候会有点错误,但在之后的文章里会说明之前的错误,毕竟人都是不断成长的)
E绵绵
要自律 要chin up
展开
-
【C语言】文件操作(1)
所以这就是我们的c语言文件读写的第一部分(这是我在一月份c语言时期写的存稿,所以书写可能没有现在美观,还请见谅)。原创 2024-04-24 20:05:53 · 2246 阅读 · 165 评论 -
牢记于心单独说出来的知识点(后续会加)
这也能很好解释0xffffffff为什么等于-1,因为0xffffffff本身就是补码,其原码则为-1,展示出来其就是-1.非十进制(八进制,十六进制)写在文件中它本身就是补码,计算机是不用进行内存转换,它直接存入内存。(因为十六进制本身是补码,所以计算机里面我们看到的都是十六进制去存储)并不像十进制一样有+或者-(负号)去修饰。原创 2024-03-03 17:23:05 · 456 阅读 · 0 评论 -
动态内存管理
所以现在我们就把动态内存管理这一篇章给讲完了,下篇文章我将给大家介绍文件操作这一篇章。!!原创 2024-01-10 15:49:11 · 1170 阅读 · 0 评论 -
联合体类型和枚举类型
对于联合体,其语法结构和结构体对比可以说唯一的变换就是把struct换成union,其他的都一模一样,所以我们知道了struct的语法结构相当于知道union的语法结构,其初始化和创建也就得心应手。(上篇文章已经讲了struct的语法结构(声明),这里就不讲了,不知道的可以翻到上篇文章看一下)并且之前也讲过,对于union也可以进行匿名操作,间接访问操作符和直接访问操作符也可以应用在上面。对于我们上一篇的位段同理上述行为也可以,并且位段和前面两种类型的语法结构也很相似,就是多了个:和数字,关键字还是stru原创 2024-01-06 19:16:17 · 1418 阅读 · 2 评论 -
结构体类型
位段的声明和结构是类似的,都是用到struct关键词,其用法也几乎一样,结构体所用的间接操作符和直接操作符 位段都可以用到,且用法相同。其有两个不同:1. 由于位段有很多不确定因素,位段的每个成员必须类型都相同,且类型只能在 char,int之间选(这里的int是指unsigned int ,sigined int int这三种,char同理)2.位段的成员名后边有⼀个冒号和⼀个数字。下面给一个例子struct Aint a:2;int b:5;int c:10;int d:30;原创 2024-01-05 18:04:54 · 1129 阅读 · 2 评论 -
数据在内存中的存储
这些题都涉及了整数在内存中的存储以及计算,关于这些知识点在前面我已经全部说明完毕,所以只要你搞懂了这些知识点做这些题目就很简单。到这我们的整数在内存中的存储就结束了,接下来将给大家讲述单个数据另一大块:浮点数在内存中的存储。对于浮点数在内存中的存储来说,我们现在先只需要知道这些重点,必须要知道的就行了,不需要把它的所有细枝末节全部都搞完,那非常浪费时间,而且平心而论,浮点数作者讲的已经很细了,所以浮点数目前只需要了解以上知识点就行(对于浮点数在内存中的计算在之后的文章会讲到,现在还没到时候)原创 2023-12-30 22:28:32 · 1273 阅读 · 0 评论 -
内存函数的学习
这就是我们的内存函数 ,其头文件都为#include<string.h>.到这里,我们就讲了四个内存函数,都是以字节为单位去作用。原创 2023-12-23 19:53:15 · 1069 阅读 · 4 评论 -
字符函数和字符串函数
这些字符分类函数都是类似的,返回值都是int,假如我们用islower,如果参数是小写字母,则返回非0的随机数,如果不是则返回0.参数类型也要是int,但我们输入的不仅可以为整数(字符的ascall码值),也可以是单个字符(因为其类型差距过小,所以系统直接帮其隐式转换)。这些字符分类函数如下 不要求强记, 知道几个很简单的就行,islower,isupper。其他的到时候要用到的话再回来看下就行。其头文件都为#include,这个为新学的头文件 。大写字母的ascall码值比小写字母小32原创 2023-12-21 20:37:35 · 947 阅读 · 0 评论 -
指针(5)(含大量题目)
指针5基本上都是题目,在做题目时我们还总结了一些知识点,比如知道了多个占位符的作用,%s,%p,%x,%d到底本质是怎么作用的。除此之外还通过这些题目进一步提高了我们的思维能力。所以指针(5)就到这里了。指针这一大篇就通过五大节结束了。我们之后学习字符函数和字符串函数。原创 2023-12-04 20:35:04 · 1132 阅读 · 1 评论 -
指针(4)
这就是指针(4) 的内容,内容有点少,其中的重点是qsort函数。原创 2023-12-01 13:47:05 · 503 阅读 · 0 评论 -
指针(3)
所以根据该结论来看 ,两个数组地址不一样,所以指针变量值不一样。而后面常量字符串相同,所以是同一块内存空间,指针变量值相同,如 int *arr[5] 中数组为int *[5]类型,其中包含五个int *类型的指针变量。面对特别复杂的类型创建,像上方两段有趣的代码。虽然我们了解其本质,但是为了写的方便点,可以重命名类型。如上是各种类型的命名。此时加上我的个人理解来说一下。到这时候,我们来看一个题目。原创 2023-11-29 13:52:54 · 1079 阅读 · 0 评论 -
指针(2)
在创建了数组后,数组名在两个地方是特殊的,其他地方都代表着数组首元素的地址。这两个地方是 用sizeof(数组名)时,数组名表示整个数组,计算的是整个数组的大小。用&数组名时,数组名表示整个数组,得到的是整个数组的地址。其地址类型跟数组首元素的地址类型不一样。从而计算也不一样。除却这两个地方外,其他都代表着数组首元素的地址。 创建一个数组int arr[10]={0} ,一般我们访问数组是用下标引用操作符如arr[5],。我们可能认为这个操作符用起来很复杂,非常神秘,但其实其操作符本质很简单如arr[5]。原创 2023-11-25 17:21:17 · 284 阅读 · 0 评论 -
指针(1)
野指针其实就是指向了未被申请内存的空间的指针。通常情况下,野指针是不会造成影响的,程序依旧能正常运行。但是如果野指针指向的未被分配的内存被分配给编译器了,那就会造成无法估计的影响。空指针NUL是个地址且值为0,并且可存入任何类型指针中。存入NULL的指针不可使用,否则会报错,所以存入NULL的指针叫空指针。所以对于指针如果你没有确定的地址给它,就给它一个NULL,使其成为空指针,防止其变为野指针,造成无法估计的影响。原创 2023-11-22 21:02:20 · 1147 阅读 · 1 评论 -
操作符详解
十进制其中每个数在0到九中 ,其他进制同理,如二进制数只能为0到1 ,而对于16进制 中超过十的数用abcdefg表示 a表示10,同理往后。而对于c语言中二进制 八进制 十六进制的表示 则有以下链接而对于之前的转义字符/ddd和/xdd是这两个单纯表示字符 并不是代码中进制的表现形式 真正的进制表现形式在上述链接中如二进制其他进制也一样用以下方法可以得出二进制 对于本质不用理解 就这么用。原创 2023-11-16 18:16:09 · 215 阅读 · 1 评论 -
函数递归和迭代
上述就是栈溢出 导致出现了bug所以递归我们要加入限制条件函数每次调用都会在栈区申请一定空间 该空间为函数栈帧 函数被调用时申请空间 函数结束后该空间销毁。原创 2023-11-08 20:54:31 · 215 阅读 · 1 评论 -
调试以及相关的点
Debug有调试 且因为有调试的东西文件较大 无优化;release无调试 文件较小 且系统自动优化较多。原创 2023-11-05 22:25:55 · 145 阅读 · 2 评论 -
static和extern
全局变量虽然控制域和生命周期的范围都是整个程序 但是如果想在程序中的不同文件使用 就需要引用extern去声明。如果用static修饰函数 (该函数被修饰后效果跟全局变量被修饰后效果一样) 都是只能在该文件上使用。储存区发生变化变为静态区 生命周期会和程序生命周期一样 而控制域不变还是只能在那个小地方使用。函数能在整个项目中用,但是在不同文件中用就要跟全局变量一样需要声明(全局变量声明要用到。如果用static修饰全局变量 则全局变量会变为。如上图全局变量需在不同文件中使用。原创 2023-11-03 09:47:36 · 146 阅读 · 0 评论 -
函数的初步认知
其中橙色的是函数的定义 紫色的是函数的声明 绿色的是函数的调用函数声明结构如下依照我的理解 函数声明跟函数定义连接在一块 一旦编译了函数声明 就会直接扫描到跟它链接的函数定义(不管函数定义位于哪里) 知道了函数的作用 之后就可以使用函数;如果函数定义在函数调用前面,那么不需要函数声明作为桥梁, 直接扫描函数定义知道它使用情况 后面直接使用。原创 2023-10-29 15:06:13 · 194 阅读 · 1 评论 -
数组的初步认识
数组跟变量不一样 变量只能储存一个数据 如一个字符 而数组能储存多个数据 (所以字符串是存储在数组中的)原创 2023-10-27 12:16:42 · 171 阅读 · 1 评论 -
截至2023年10月20日学习的所有知识
其中这识别不出来时返回值为EOF只是个人理解 (不知道返回值为0和返回值为EOF的区别 所以就认为识别不出来时返回值为EOF而不为0 ,当然自己也用刚才那个函数进行验证了的确验证出返回值为-1(EOF)我知识太少了只能这么认为)其中scanf()的返回值 也就是整个函数的值 如 int sum=scanf()sum等于scanf()的返回值 (识别出来的变量的次数)因为目前知识储备很少 所以根据while(scanf()!所以signed允许输入的范围永远比unsigned小 (从这可知)原创 2023-10-21 11:19:50 · 245 阅读 · 1 评论