C语言
文章平均质量分 85
分享C语言学习经验
Actinen
不秃头程序员
展开
-
[C语言]——文件操作
文件操作的详细解剖原创 2024-04-28 17:01:11 · 950 阅读 · 0 评论 -
[C语言]——字符函数和字符串函数
这个头⽂件中说明的,C语言程序启动的时候就会使用⼀个全面的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误,当我们在使⽤标准库中的函数的时候发生了某种错误,就会将对应的错误码,存放在errno中,而⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是有对应的错误信息的。⽐较str1和str2的前num个字符,如果相等就继续往后比较,最多⽐较num个字母,如果提前发现不⼀样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。拷贝num个字符从源字符串到目标空间。原创 2024-02-29 15:44:17 · 829 阅读 · 0 评论 -
总结C/C++中程序内存区域划分
C/C++程序内存分配的几个区域:原创 2024-04-10 16:41:06 · 300 阅读 · 0 评论 -
[C语言]——柔性数组
允许是。原创 2024-04-08 15:59:43 · 495 阅读 · 0 评论 -
[C语言]——动态内存经典笔试题分析
这是一个返回栈空间地址的问题,str虽然能通过地址找到所对应的空间,但是一旦出GetmMemory函数中,空间已经还给操作系统,空间已经没有使用权限,此时的str就是。print调用的时候,会将绿色区域覆盖。原创 2024-04-07 19:41:34 · 392 阅读 · 0 评论 -
[C语言]——动态内存管理
当是情况2的时候,原有空间之后没有足够多的空间时,扩展的方法是:在堆空间上另找⼀个合适大小的连续空间来使用。有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的时 候内存,我们⼀定会对内存的⼤⼩做灵活的调整。道,那数组的编译时开辟空间的方式就不能满足了。当是情况1的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。指向的空间不是动态开辟的,那free函数的行为是未定义的。原创 2024-04-03 11:43:11 · 818 阅读 · 0 评论 -
[C语言]——自定义类型:联合和枚举
一.联合体(union)原创 2024-03-22 00:43:04 · 485 阅读 · 0 评论 -
[C语言]——数据在内存中的存储(以二进制的形式存储的)
但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;那么,第⼀位的符号位S=0,有效数字M等于001后⾯再加20个0,凑满23位,指数E等于3+127=130, 即10000010 所以,写成⼆进制形式,应该是S+E+M,即。⽐如保存1.01的时候,只保存01,等到读取的时候,再把第⼀位的1加上去。两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,而数值位最⾼位的⼀位是被当做符号位,剩余的都是数值位。原创 2024-03-21 00:13:13 · 889 阅读 · 0 评论 -
[C语言]——内存函数
函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。如果source和destination有任何的重叠,复制的结果都是未定义的。如果源空间和⽬标空间出现重叠,就得使用memmove函数处理。⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节。一.memcpy使用和模拟实现(内存拷贝)三.memset 函数的使用(内存设置)二.memmove 使用和模拟实现。原创 2024-03-21 00:02:14 · 677 阅读 · 0 评论 -
[C语言]——操作符详解
目录一.操作符的分类二.二进制和进制转换1.二进制转十进制 2.二进制转八进制和十六进制2.1二进制转八进制 2.2二进制转十六进制三.原码、反码、补码四.移位操作符1.左移操作符2.右移操作符五.位操作符:&、|、^、~练习1:编写代码实现:求⼀个整数存储在内存中的⼆进制中1的个数。练习2:⼆进制位置0或者置1,编写代码将13⼆进制序列的第5位修改为1,然后再改回0六.单目操作符七.逗号表达式八.下标访问[ ]、函数调用( )1.[ ] 下标引用操作符2.函数调用操作符九.结构成员访问操作符1.结构体1.原创 2024-03-20 12:16:49 · 962 阅读 · 0 评论 -
[C语言]——函数递归
递归是学习C语言函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数自己调用自己。//main函数中⼜调⽤了main函数return 0;上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。原创 2024-03-20 10:26:31 · 979 阅读 · 0 评论 -
[C语言]——VS实用调用技巧
编程常见错误归类。原创 2024-03-17 20:28:04 · 942 阅读 · 0 评论 -
[C语言]——函数
的概念。原创 2024-03-17 11:36:29 · 900 阅读 · 0 评论 -
[C语言]——数组练习
在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。,如果left和right⽐较⼤的时候可能存在问。编写代码,演⽰多个字符从两端移动,向中间汇聚。练习1:多个字符从两端移动,向中间汇聚。求中间元素的下标,使⽤。原创 2024-03-12 12:24:00 · 363 阅读 · 0 评论 -
[C语言]——数组
有 ⼀个⽐较迷惑的点,变⻓数组的意思是数组的⼤⼩是可以使⽤变量来指定的,在程序运⾏的时候,根 据变量的⼤⼩来指定数组的元素个数,⽽不是说数组的⼤⼩是可变的。那数组如何初始化呢?图中最右侧绿⾊的数字表⽰⾏号,第⼀⾏蓝⾊的数字表⽰列号,都是从0开始的,⽐如,我们说:第2⾏,第4列,快速就能定位出7。C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号。前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元。原创 2024-03-12 10:39:43 · 981 阅读 · 0 评论 -
[C语言]——分支和循环(4)
写⼀个猜数字游戏游戏要求:(1)电脑自动生成1~100的随机数(2)玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束。原创 2024-03-07 15:43:49 · 1308 阅读 · 2 评论 -
[C语言]——分支和循环(3)
一.while循环while语句的语法结构和if语句非常相似。原创 2024-03-07 00:29:32 · 1098 阅读 · 0 评论 -
[C语言]——分支和循环(2)
一.逻辑操作符:&& , || ,!逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。:逻辑取反运算符(:与运算符,就是的意思(:或运算符,就是的意思(注:C语言中,非0表示真,0表示假。原创 2024-03-06 17:00:14 · 1211 阅读 · 0 评论 -
[C语言]——分支和循环(1)
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以。一.if语句。原创 2024-03-06 15:45:01 · 982 阅读 · 0 评论 -
[C语言]——scanf和printf介绍
scanf() 的语法跟printf()类似。原创 2024-03-05 21:16:57 · 940 阅读 · 0 评论 -
[C语言]——操作符
俗话说,强扭的⽠不甜,我们使⽤强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化就能实现代码,这样⾃然更好的。原因就在于 C 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分,如果希望得到浮点数的结果,C语⾔虽然⽀持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样⽅便观察代码的执⾏细节。除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。这样写,在调试的是,每⼀次赋值的细节都是可以很⽅便的观察的。操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。原创 2024-03-04 23:43:10 · 840 阅读 · 0 评论 -
[C语言]——C语言数据类型和变量
一.数据类型介绍C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。原创 2024-03-04 16:01:10 · 957 阅读 · 0 评论 -
[C语言]——C语言常见概念(3)
为 了方便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找⼯作的时候,写代码时 留下必要的注释也会给⾯试官留下更好的印象。空语句,⼀般出现的地方是:这⾥需要⼀条语句,但是这个语句不需要做任何事,就可以写⼀个空语句。在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤。:换⻚符,光标移到下⼀⻚。原创 2024-03-03 13:41:38 · 1140 阅读 · 0 评论 -
[C语言]——C语言常见概念(2)
C语⾔中有⼀批保留的名字的符号,⽐如:intifreturn,这些符号被称为保留字或者关键字。关键字都有特殊的意义,是保留给C语⾔使⽤的程序员⾃⼰在创建标识符的时候是不能和关键字重复的关键字也是不能⾃⼰创建的。C语⾔的32个关键字如下:define是命令在C99标准中加⼊了 inline 、restrict_Bool_Comploex_Imaginary等关 键字。⼀些关键字⼤家可以去了解⼀下,不过使⽤最多的还是上⾯的32个关键字。(C语⾔关键字的全部介绍)原创 2024-03-03 11:04:25 · 981 阅读 · 0 评论 -
[C语言]——C语言常见概念(1)
。原创 2024-03-03 10:55:35 · 934 阅读 · 0 评论 -
[C语言]——自定义类型:结构体
一.结构体类型的声明结构是⼀些值的集合,这些值称为成员变量。结构的每个成员1.结构的声明2.结构体变量的创建和初始化3。原创 2024-02-16 21:18:03 · 877 阅读 · 1 评论 -
[C语言]——数组指针笔试题及解析
一.⼀维数组。原创 2024-02-13 22:09:59 · 376 阅读 · 1 评论 -
[C语言]——深入理解指针(5)
计算变量所占内存内存空间大小的,单位是 字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的大小。sizeof 只关注占⽤内存空间的大小,不在乎内存中存放什么数据。是C语言库函数,功能是求字符串⻓度。sizeof 和 strlen的对比。sizeof和strlen的对比。1.sizeof是操作符。2.srtlen是求。,就会持续往后找,可。原创 2024-02-10 21:19:34 · 369 阅读 · 1 评论 -
[C语言]——深入理解指针(4)
(1)回调函数就是。原创 2024-02-07 22:35:35 · 355 阅读 · 1 评论 -
[C语言]——深入理解指针(3)
所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。根据前⾯学习整型指针,数组指针的时候,我们的类⽐关系,我们不难得出结论:函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调⽤函数的。所以 p是⼀个指针,指向⼀个数组,叫。可以把字符串想象为一个字符数组,但是这个数组是不能修改的,当常量字符串出现在表达式中的时候,他的值是第一个字符的地址。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。原创 2024-02-07 18:55:49 · 1025 阅读 · 1 评论 -
[C语言]——深入理解指针(2)
⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。原创 2024-02-06 15:58:46 · 927 阅读 · 1 评论 -
[C语言]——深入理解指针(1)
Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收a和b的值,但是 x的地址是0x00cffcec,y的地址是0x00cffcf0,x和y确实接收到了a和b的值,不过x的地址和a的地址不⼀样,y的地址和b的地址不⼀样,相当于x和y是独⽴的空间,那么在Swap1函数内部交换x和y的值, ⾃然不会影响a和b,当Swap1函数调⽤结束后回到main函数,a和b的没法交换。变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。原创 2024-02-06 15:39:48 · 1050 阅读 · 1 评论