C语言讲解
文章平均质量分 91
基础!基础!最基础!
慢了半拍i
这个作者很懒,什么都没留下…
展开
-
C运用练习讲解
这又是一个新坑,算上之前的4个坑这是第五个坑(1、C/C++的讲解,2、C语言小游戏,3、大学生活,4、假哲家因为某些原因没GS),这个就是发一些自己在刷题的过程中遇到自己感觉还不错的习题进行分享讲解,这将是一个非常长的合集起码最近几年不大会断更。每次的更新就会在最后留有时间戳,相当是自己一个做题的记录吧。这是我自己根据自身实力来选题,希望能帮助到你。(目前一个妥妥的菜鸟入门级别)原创 2023-12-07 11:14:10 · 994 阅读 · 36 评论 -
C语言——T/单链表专题
链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状。概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表。需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。在链表⾥,每节“⻋厢”是什么样的呢?原创 2024-02-08 12:28:52 · 426 阅读 · 0 评论 -
C语言——S/顺序表专题
数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数据元素之间呈现的结构。线性表(linearlist)是n个具有相同特性的数据元素的有限序列。概念:数据结构是计算机存储、组织数据的⽅式。线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在物理上存储时,通常以数组和链式结构的形式存储。1)能够存储数据(如顺序表、链表等结构)2)存储的数据能够⽅便查找。1、顺序表的概念及结构。原创 2024-02-04 09:58:45 · 813 阅读 · 35 评论 -
C语言——R/预处理详解
基本语法举个例⼦:#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。思考:在define定义标识符的时候,要不要在最后加上;?建议不要加上;,这样容易导致问题。⽐如下⾯的场景:max = MAX;原创 2024-02-03 09:15:38 · 1334 阅读 · 18 评论 -
C语言——Q/编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。第2种是执⾏环境,它⽤于实际执⾏代码。原创 2024-02-02 09:04:07 · 946 阅读 · 2 评论 -
C语言——P/文件操作
磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。1、程序⽂件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程(windows环境后缀为.exe)。2、数据⽂件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件。本章讨论的是数据⽂件。在以前各章所处理数据的输⼊输出都是以终端为对象的,即从终端的键盘输⼊数据,运⾏结果显⽰到显⽰器上。原创 2024-02-02 08:48:51 · 972 阅读 · 3 评论 -
C语言——O/动态内存管理
C/C++程序内存分配的⼏个区域:1. 栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。2. 堆区(heap):⼀般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配⽅式类似于链表。3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。原创 2024-01-29 13:11:38 · 1796 阅读 · 52 评论 -
C语言——N/自定义类型:联合和枚举
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。原创 2024-01-29 12:37:37 · 1520 阅读 · 8 评论 -
C语言——M/自定义类型:结构体
答案是不⾏的,因为Node是对前⾯的匿名结构体类型的重命名产⽣的,但是在匿名结构体内部提前使⽤Node类型来创建成员变量,这是不⾏的。仔细分析,其实是不⾏的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的⼤⼩就会⽆穷的⼤,是不合理的。3.结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍。4.如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)原创 2023-12-14 10:35:26 · 583 阅读 · 39 评论 -
C语言——L/数据在内存中的存储
是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述概念需要记住,方便分辨大小端。原创 2023-12-12 11:40:05 · 1554 阅读 · 31 评论 -
C语言——K/C语言内存函数
• 函数 memcpy 从 source 的位置开始向后复制num个字节的数据到destination指向的内存位置。• 这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。对于重叠的内存,交给memmove来处理。原创 2023-12-11 15:09:12 · 935 阅读 · 21 评论 -
C语言——J/字符函数 和 字符串函数
前言:在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包。上⾯的代码,我们将⼩写转⼤写,是-32完成的效果,有了转换函数,就可以直接使⽤ tolower 函。练习:写⼀个代码,将字符串中的⼩写字⺟转⼤写,其他字符不变。原创 2023-11-28 11:07:03 · 652 阅读 · 8 评论 -
C语言——I/深入理解指针(五)
sizeof是,计算变量所占内存内存空间⼤⼩的,单位是,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。原创 2023-12-05 09:24:21 · 597 阅读 · 1 评论 -
C语言——I /深入理解指针(四)
回调函数就是⼀个通过函数指针调⽤的函数。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。第13讲中我们写的计算机的实现的代码中,红⾊框中的代码是重复出现的,其中虽然执⾏计算的逻辑是区别的,但是输⼊输出操作是冗余的,有没有办法,简化⼀些呢?原创 2023-12-04 20:13:08 · 805 阅读 · 5 评论 -
C语言——I /深入理解指针(三)
C/C++会把常量字符串存储到单独的⼀个内存区域,当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。解释:p先和*结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。存放的是整形变量的地址,能够指向整形数据的指针。上⾯代码的意思是把⼀个常量字符串的⾸字符 h 的地址存放到指针变量 pstr 中。之前我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。数组指针变量是指针变量?原创 2023-11-29 09:53:21 · 1247 阅读 · 36 评论 -
C语言——I /深入理解指针(二)
这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。这时候有同学会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。原创 2023-11-27 15:32:10 · 1388 阅读 · 6 评论 -
C语言——I /深入理解指针(一)
八、指针的使⽤和传址调⽤。三、指针变量类型的意义。四、const修饰指针。七、assert断言。原创 2023-11-20 17:09:34 · 595 阅读 · 3 评论 -
C语言——H/操作符详解
算术操作符: + 、- 、* 、/ 、%移位操作符:>位操作符:&、|、 ^、~赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、= 、&= 、|= 、^=单⽬操作符:!、++、--、&、*、+、-、~ 、sizeof、(类型)关系操作符: > 、>= 、< 、原创 2023-11-20 17:11:13 · 503 阅读 · 37 评论 -
C语言——G/ VS2022的调试
找问题的过程叫称为调试,英⽂叫debug(消灭bug)的意思。调试⼀个程序,⾸先是承认出现了问题,然后通过各种手段去定位问题的位置,可能是逐过程的调试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码,重新测试。原创 2023-11-14 08:44:45 · 363 阅读 · 39 评论 -
C语言——F/函数的栈帧的创建和销毁
栈(stack)是现代计算机程序里最为重要的概念之一,几乎每一个程序都使用了栈,没有栈就没有函数,没有局部变量,也就没有我们如今看到的所有的计算机语言。先入栈的数据后出栈就像叠成一叠的书,先叠上去的书在最下面,因此要最后才能取出。在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。压栈操作使得栈增大,而弹出操作使得栈减小。在经典的操作系统中,栈总是向下增长(由高地址向低地址)。在我们常见的i386或者x86-64下,栈顶由成为 esp 的寄存器进行定位的。原创 2023-11-13 16:47:50 · 979 阅读 · 17 评论 -
C语言——E/函数
ret_type fun_name(形式参数)是用来表⽰函数计算结果的类型,有时候返回类型可以是 void ,表⽰什么都不返回;就像⼈的名字⼀样,有了名字方便称呼,函数有了名字⽅便调用,所以函数名尽量要根据函数的功能起的有意义;函数的参数就相当于,⼯⼚中送进去的原材料,函数的参数也可以是 void ,明确表⽰函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。• {}括起来的是函数体函数体就是完成计算的过程。1、单个文件2、多个文件3、static和extern。原创 2023-11-03 10:25:51 · 692 阅读 · 35 评论 -
C语言——D/数组
数组是⼀组相同类型;• 数组中存放的是1个或者多个数据,但是数组元素个数;• 数组中存放的多个数据,类型是的。数组分为,多维数组⼀般⽐较多⻅的是⼆维数组。原创 2023-11-02 09:05:21 · 862 阅读 · 47 评论 -
C语言——C/分支和循环
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤if 、 switch 实现分支结构,使⽤for 、 while 、 do while 实现循环结构。原创 2023-10-31 09:14:56 · 320 阅读 · 32 评论 -
C语言——B/数据类型和变量
数据类型:就是数据之间相似的特征;#介绍方向为内置数据类型,自定义类型后面介绍数据类型:内置类型和自定义类型;内置类型包括:字符型、整型、浮点型、布尔类型;自定义类型包括:数组、结构体(struct)、枚举(enum)、联合体(union)。是将参数文本输入到屏幕中;printf ( ) 是标准库的头文件 stdio.h 定义的,在使用时必须在源码文件头部引入这个头文件。原创 2023-10-27 17:36:34 · 386 阅读 · 9 评论 -
C语言——A/概念
C语言基础学习者参考内容原创 2023-10-20 09:58:31 · 517 阅读 · 13 评论