
c语言之路重点知识整合
文章平均质量分 79
天喜Studio
6月份城市(哈尔滨)之星TOP2、C/C++领域新星创作者。
展开
-
【c语言】文件复制原理
文件复制的原理是从源文件中读取数据,然后将这些数据写入到另一个目标文件中具体步骤:使用**fopen()**函数打开源文件和目标文件使用fread()函数从源文件中读取数据,每次读取指定数量的字节,存放在缓冲区中把缓冲区中的数据使用**fwrite()**函数把缓冲区中的数据写入到目标文件中原创 2023-05-20 16:17:01 · 1342 阅读 · 0 评论 -
【c语言】二进制文件的读写操作
一、二进制文件写操作fwrite1.存储一个整型变量2.存储一个数组3.存储一个字符串二、二进制文件读操作fread1.读取整数2.读取一个数组原创 2023-05-20 15:48:02 · 8318 阅读 · 0 评论 -
【c语言】文件的光标操作
使用下列**文件操作函数**,可以在程序中对文件进行读写操作- ftell() 函数用于**获取**当前文件光标的**位置**- rewind() 函数用于将文件指针**重置**到文件开头- fgetpos() 和 fsetpos() 函数用于**获取和设置**文件当前指针位置,使用了fpos_t类型- fseek() 函数可将文件指针从当前位置向前或向后移动一定数量的字节,进行**重定位**原创 2023-05-20 11:40:43 · 4619 阅读 · 0 评论 -
【c语言】文本文件的读写操作
一、文本写操作1.覆盖重写模式2.打开追加模式二、文本读操作1.读取整数2.读取汉字一、文本写操作1.覆盖重写模式使用wt以覆写的方式打开文本文件:原创 2023-05-18 19:27:20 · 9257 阅读 · 1 评论 -
【c语言】文件的基本操作
文件的概念1.数据持久化2.文件种类二、fopen打开方式参数三、 FILE*文件指针四、r只读五、w覆写六、文件重命名七、文件删除一、文件的概念文件(file)是指可以被命名、存储在磁盘等设备上、并包含一定类型数据的信息实体。文件是计算机中最基本的数据持久化形式之一,能够在程序结束后继续存在,并可以随时读取和修改。原创 2023-05-17 22:25:45 · 1103 阅读 · 0 评论 -
【c语言】组件化打包—动态链接库dll
动态库把对一些库函数的链接载入推迟到程序运行的时期 可以实现进程之间的资源共享(因此动态库也称为共享库) 将一些程序升级变得简单 甚至可以真正做到链接载入完全由程序员在程序代码中控制(显示调用)原创 2023-05-17 21:08:31 · 1256 阅读 · 0 评论 -
【c语言】Union共用体
一、共用体union共用体的定义格式:二、过程原理:三、结构体和共用体的区别一、共用体union共用体:所有成员共享一段存储空间,但每个时间只有一个成员在使用原创 2023-05-17 14:24:47 · 527 阅读 · 0 评论 -
【c语言】组件化打包—静态库lib
静态库的概念和作用,以及如何打包静态库。静态库是一种包含已编译代码的集合,可以在链接时与应用程序一起链接到最终可执行文件中。原创 2023-05-16 09:23:14 · 2268 阅读 · 0 评论 -
【c语言】详解 结构体的内存对齐补齐
先根据结构体中的最大类型int确定 结构体中每一段空间为4字节(int的大小)然后按照从上到下的顺序,将结构体中的变量放入内存段中如果内存段大于等于变量的类型大小(AA中第一段内存空间4字节刚好放下4字节的a变量)然后第二段内存空间为4字节,short类型的c变量占用2字节,可以放下,就将c放入,此时第二段内存空间还剩2字节最后char类型的b变量占用1个字节,现在第二段的可用空间为2字节,可以放下,就将b放入,浪费1字节的空间最终结果为2×4=8个字节AA2结构体中:还是先根据结原创 2023-05-11 23:04:25 · 995 阅读 · 1 评论 -
【c语言】字符串常用函数组件化封装 | 字符串总结
本字符串函数功能组件可以被复用在平时的项目中。 c语言字符串所有知识点总结原创 2023-05-09 19:38:09 · 1208 阅读 · 0 评论 -
【c语言】字符串类型转换 | itoa函数的使用
字符串类型转换 目录一、itoa()itoa奇妙用法—各进制打印二、atoi atof atol一、itoa()itoa就是 i to a 整数到ASCII码(字符)itoa函数的传参类型:原创 2023-05-07 22:05:18 · 7152 阅读 · 0 评论 -
【c语言】字符串匹配(搜索) | API仿真
字符串匹配 目录一、字符串匹配二、strstr仿真声明:指针方式定义:调用测试:运行结果:一、字符串匹配字符串匹配是对一个字符串进行搜索匹配另一个字符串搜索str1字符串中是否有与str2匹配的短字符串标准库函数strstr():原创 2023-05-07 21:44:37 · 980 阅读 · 1 评论 -
【c语言】字符串比较 | API仿真
字符串比较 目录一、字符串比较二、strncmp仿真声明:指针方式定义:调用测试:运行结果:原创 2023-05-06 15:22:18 · 945 阅读 · 0 评论 -
【c语言】字符串拼接 | API仿真
字符串拼接 目录一、字符串拼接二、strcat仿真声明:指针方式定义:调用测试:运行结果:原创 2023-05-06 15:10:48 · 784 阅读 · 0 评论 -
【c语言】字符串复制 | API仿真
字符串复制目录一、字符串复制二、strcpy仿真声明:指针方式定义:调用测试:运行结果:原创 2023-05-06 14:56:48 · 1139 阅读 · 0 评论 -
【c语言】字符串计算长度 | API仿真
字符串计算长度 目录一、字符串计算长度二、strlen仿真声明:1.下标方式定义:2.指针方式定义:调用测试:运行结果:一、字符串计算长度标准库函数strlen:原创 2023-05-06 14:38:06 · 671 阅读 · 0 评论 -
【c语言】字符串输出方式 | API仿真
c语言系列专栏:c语言重点之路整合字符串知识点:字符串基本概念、存储原理字符串输出目录一、字符串输出二、对%s 仿真声明:1.下标方式输出定义:2.指针方式输出定义:调用测试:运行结果:一、字符串输出输出:定义一个字符串然后通过%s格式输出字符串名称就可以打印出字符串的内容原创 2023-05-06 14:20:40 · 1323 阅读 · 0 评论 -
【c语言】字符串的基本概念 | 字符串存储原理
一、字符、字符数组1.字符2.字符数组二、字符串三、字符串的存储原理字符串常量在代码中代表所在常量区的首地址(地址常量)一、字符、字符数组1.字符字符char知识点:字符类型详解每个我们看见的字符影像都有自己的影响编码,每个字符对应着各自的影响编码(ASCII码)根据ASCII码,每个字符都有其各自的数字编码,通过使用数字编码即可打印出对应的字符影像对于一个字符输出其%d格式为其数字编码,输出%c格式就是其字符影像2.字符数组定义一个字符数组:原创 2023-05-06 09:32:13 · 4379 阅读 · 2 评论 -
【c语言】函数递归调用
c语言系列专栏:c语言之路重点知识整合目录一、递归基本概念的理解二、递归算法的基本模式一些习题实例:一、递归基本概念的理解函数递归就是函数在其内部再次调用自己的过程。二、递归算法的基本模式递归算法的基本模式:终止条件,递推公式例如:计算阶乘5*4*3*2*1=阶乘计算到1,终止条件为n==1阶乘计算为前一个数累乘到后一个数,递推公式为n*fun01(n-1)一定要有终止条件!!因为没有终止条件会一直循环,过度递归可能会导致栈原创 2023-05-04 23:29:51 · 1629 阅读 · 0 评论 -
【c语言】五大内存区域 | 堆区详解
堆区和栈区的区别 1.分配方式不同:堆区只有在遇到malloc才会创建 栈区在函数调用全部创建完 2.栈区:临时性、少量的数据 堆区:持续的、大量的数据 3.管理方式不同:栈区自动 堆区手动 4.堆区分配的空间更大 5.都是延伸性增长,方向不同 6.堆区容易产生碎片 free 栈区自动创建回收不会产生碎片 (不释放的安全隐患,占用内存空间导致程序不能正常运行)1 代码区用来存放函数{ }内流程结构中的代码2 常数区存放不可原创 2023-04-28 18:25:32 · 1809 阅读 · 0 评论 -
【c语言】static静态变量
静态变量c会在程序启动时进行创建,存放在全局/静态区。static 理解为局部内的 唯一变量 相当于全局,但全局不可访问总结与全局变量区别与全局变量不同的限制范围:函数内部、编译单元(.obj) 不能修饰整个项目内全局变量整个项目都可以声明使用static静态变量 在项目内不可用extern外部链接声明 内部全局static静态,表示唯一的概念特点:static修与局部变量区别静态变量在程序运行时创建,比局部变量声明周期长,不会被回收 放在全局/静态区原创 2023-04-27 11:01:09 · 991 阅读 · 0 评论 -
【c语言】全局变量 | 局部变量的生命周期与作用域
四、extern外部变量的声明所谓外部变量即在另外的源代码文件中定义的全局变量。如果当前的源代码文件要访问时;就需要用extern 声明一下,即告诉编译器,我目前用的变量是本代码文件以外定义的。用extern仅仅是声明告知一下,并不是定义。同样在使用extern声明时不能赋予初始值,否则时重定义错误。声明不等于定义!! 定义是定义新的变量,声明是告知变量。外部链接声明:在同一项目下其他的源文件中定义了变量。另一个源文件就可以extern声明一、 全局变量全局变量的生命周期长,从程序启动到程序原创 2023-04-27 10:32:03 · 923 阅读 · 0 评论 -
【c语言】详解宏定义#define 各种使用方法
一、宏替换格式宏替换简称宏的格式: #define 宏替换名称 替换内容差异:1 #define执行的时点是预处理即编译前 typedef执行的时点是编译时2 #define只是单纯的“查找替换”把源代码变成另外的样子,并没有创造新的类型名称。3 typedef是定义的一个类型名,编译器把它当作一种新的类型来看待。所以定义类型常用typedef表达式、函数也可以进行替换三、替换一个函数或表达总结宏的本质是:查找、替换!宏的作用是:增强可读性、灵活性!原创 2023-04-27 09:55:58 · 6817 阅读 · 0 评论 -
【c语言】详解c语言#预处理期过程 | 宏定义前言
1:预处理期(也叫预编译): 在这一阶段,源码中的所有预处理语句得到处理例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。 2:编译期:编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。 3:汇编期:生成机器语言代码,保存在后缀为.o的目标文件中 4:链接期:经过汇编以后的机器代码还不能直接运行。为了使操作系统pragma once预处理包含一次预处理期就是将.h文件中的代码拷贝一份到主文件中就是头文件的包含过程原创 2023-04-27 08:49:53 · 989 阅读 · 0 评论 -
【c语言】详解const常量修饰符 | 指针变量的不同const修饰
c语言系列专栏:c语言之路重点知识整合目录一、const是关键字!二、const修饰指针变量总结一、const是关键字!const是 constant 的缩写,意思是“恒定不变的”。它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。int、double、float、return、extern等都是关键字,在语言或编译系统的实现中具有特殊含义的const放到谁的前面,谁就不可改。放到指针变量前指向不可改,放到星号前内容不可改,同时修饰都不可改。原创 2023-04-27 08:06:30 · 2555 阅读 · 0 评论 -
【c语言】enum枚举类型的定义格式 | 基本用法
目录一、定义格式方式1方式2二、enum的作用:增强可阅读性三、枚举的本质就是整数!enum 枚举名称 { 内容1, 内容2, 内容3,... };/*定义枚举类型*/e在使用第一种方法时,枚举类型其中的值自动从0开始赋值:0、1、2、3.....二、enum的作用:增强可阅读性枚举方向,在使用时就不再使用Dircetion==1这种不好理解的代码而通过枚举类型将1定义为向上、3定义为向下等 在使用时就可以通过 fx==UP增强了代码的可阅读性!!!原创 2023-04-26 14:44:57 · 1338 阅读 · 0 评论 -
【c语言】typedef的基本用法 | 定义格式
int a;INTEGER b;BYTE c;int a与INTEGER b等价,本质都是int a。BYTE本质为char类型。二、指针、数组类型的自定义将int* 类型重命名为PINT。数组类型去掉数组名改为想改的自定义名。数组指针类型同理。三、函数类型的自定义通过对函数指针类型的重命名。使用函数指针执行函数代码。c语言函数指针详解//函数指针变量//函数指针 类型i < 4;i++)四、嵌套定义嵌套就是对命名后的名字再命名。原创 2023-04-26 14:11:28 · 986 阅读 · 0 评论 -
【c语言】函数指针详解
一、 函数名的本质我们定义一个函数,然后输出函数名查看一下:函数名就是地址!!!既然函数名是地址,就可以用指针变量来保存,就需要函数指针的概念。二、如何定义函数指针根据指针的使用经验: 指针变量必须强调是什么类型的指针。因此,函数的指针定义时必须把函数的特征表述清楚。数组的特征:int [ ]把函数名去掉就是函数的特征:int (int a, int b)数组指针:把数组名替换成指针 再加上数组的特征 int(*parr)[5];类比数组指针 函数指针类型原创 2023-04-25 21:39:34 · 11577 阅读 · 0 评论 -
【c语言】带你快速理解函数的传值和传址
快速理解函数的传值和传址前导知识:函数的数据传递原理传值和传址例:传入参数和传入参数变量空间运行结果看出:exchange函数没有改变实参的值,而swap函数改变了main函数中a,b变量的值exchange函数的ab值是由main中的ab复制过去的。因此exchange改变ab变量的值不会影响到main函数的ab变量值。exchange函数只改变了自己参数变量ab的值当传入数据的地址时,函数执行中就可以改变该地址空间内变量。swap函数执行过程中利用内存唯一的地址原创 2023-04-23 13:09:09 · 762 阅读 · 0 评论 -
【c语言】函数的数据传递原理 | 数组传入函数方法
函数的数据传递原理数组传入函数方法当实参a传入add函数中,并不是a真正传入函数中,而是以复制的方式传给了add中的a当传入地址时,复制的就是地址,传入数据时,复制的就是参数值数组传入函数:一个传入数组求和的函数如下 :如果想将整个数组传入函数中,就需要给定数组的长度len:原创 2023-04-23 12:21:37 · 5465 阅读 · 2 评论 -
【c语言】函数的基本概念 | 函数堆栈调用原理
函数的含义与作用在程序中,函数就是封装了一段流程结构的代码,是一个描述与使用逻辑功能的代码结构。利用函数封装重构后的代码结构可以增强代码的可维护性、可阅读性、可复用性等,并且利于结构化、模块化的程序设计与分工协作。函数就是对流程结构的封装!!!二、函数的基本结构函数由函数名、参数、内部的流程结构等组成。函数被用于调用和执函数的调用执行原理函数的调用堆栈函数的执行原理:调用时执行,执行完消失!!!函数在调用时,会经过函数调用栈!!!先进后出调用完一次之后消失,等待再次调用原创 2023-04-22 22:14:37 · 1334 阅读 · 0 评论 -
【c语言】多维数组原理
①使用能够指向一个int型变量的指针变量p指向arr数组的第一个值。然后用p 遍历arr所有元素。②义一维数组指针(即行指针)pl ,可以指向 具有4个int的行。让pl指向arr数组的第0面第0行。使用pl结合下标方式对arr数组遍历③定义二维数组指针(即平面指针)pm,可以指向3×4的二维表格。让pm指向arr第0面的首地址使用pm结合下标方式arr数组遍历原创 2023-04-13 17:00:39 · 4590 阅读 · 1 评论 -
【c语言】二维数组与指针 存储原理
利用指针变量操作数组 指针数组、数组指针利用指向一维数组的指针 遍历每一行 每一个元素成员利用指向一维数组的指针再对列偏移得到元素空间:利用指向二维数组的指针 遍历每一行 每一个元素成员利用二维数组指针直接得到各元素空间:二维数组数组名代表首行元素的地址,&arr为整个二维数组的地址以下是二维数组名的用法:1)找到 某行的首地址原创 2023-04-13 13:13:01 · 2211 阅读 · 0 评论 -
【c语言】二维数组
二维数组的特性长度固定 、 同类型、 有编号(先行后列),逻辑造型:表格矩阵状二维数组声明生成: 类型 数组名[行数][列数]int arr[3][4];二、二维数组的基本用法数组元素(成员)的使用:数组名[先行][后列]初始化成员个数时与一维数组不同点:列数不能省略!!!根据列数自动决定行数。一、二维数组的特性二、二维数组的基本用法三、二维数组的初始化定义1)完全初始化2)不完全初始化 3)初始化成员个数四、注意事项五、循环遍历原创 2023-04-12 23:08:37 · 4378 阅读 · 0 评论 -
【c语言】指针数组、数组指针
一、指针数组指针数组:指针类型的数组指针数组成员(存放地址):&a、&arr[1]、arr、arr+2:arr是一个地址,arr偏移2也是一个地址调试器查看一下数组成员:二、数组指针数组指针是指针类型的扩展数组指针:数组类型 加 指针定义数组指针:加了&是整个数组类型的地址,在&a+1偏移时,整个数组偏移 指向下一个数组*P指向整个数组的指针,sizeof(*P)为整个数组类型的*p一定记得加括号!!!加了括号才是数组指针,否则为指针数组。用数组指针遍历数组:原创 2023-04-11 20:11:38 · 787 阅读 · 0 评论 -
【c语言】利用指针变量操作数组
【c语言】利用指针变量操作数组数组名+偏移量操作成员空间数组名是一个不可改的地址常量,数组名代表第0个元素的地址当直接输出数组名,不输出其中的成员时: 数组名就是地址!!!打印结果为一个地址值,理解为:数组第0个元素的首地址数组名+偏移量操作成员空间二、深度理解 [ ]作为运算符的作用:就是指针移动!!!原创 2023-04-11 10:53:09 · 1184 阅读 · 0 评论 -
【c语言】一维数组***特性、存储原理
数组的特性概念:一组长度固定 、 同类型、 有顺序 变量的集合。编号最小:0 编号最大:长度-1二、一维数组的存储原理数组名是一个不可改的地址常量,数组名代表第0个元素的地址当直接输出数组名,不输出其中的成员时: 数组名就是地址!!!int [ ]多个整数 [ ]里只能放常量不完全初始化,其他成员默认为0从数组的第0个元素的地址开始,依次增加偏移量产生新的地址,再用*得到其地址对应的空间。数组名[ 下标 ] 等价于 *( 数组名+偏移量 )就是空间的寻找运算符,运算过程为原创 2023-04-10 10:53:33 · 947 阅读 · 0 评论 -
【c语言】指针进阶
野指针是指未初始化或者已经被释放但没有置为NULL的指针。使用野指针进行访问可能会导致程序崩溃或者出现未定义指针分配内存分配内存给指针是指在程序中动态地为指针变量分配一段内存空间,使得指针变量可以指向该内存空间,并且可以通过该指针变量对该内存空间进行读写操作。空指针不被分配内存!!!空指针不会被分配内存,因为空指针本身就是一个指向内存地址为0的指针,没有实际的内存空间。对空指针取地址(危险)对于空指针取地址,每次的结果不一样是因为操作系统将内存空间分配给不同的程序和进程。它会尝试取地址,原创 2023-04-09 15:21:13 · 1071 阅读 · 0 评论 -
c语言指针内存空间——大小端存储问题
为什么会出现大小端存储之分1. 一开始是由于不同架构的CPU处理多个字节数据的顺序不一样,比如x86的是小段模式,KEIL C51是大端模式。但是后来互联网流行,TCP/IP协议规定为大端模式,为了跨平台通信,还专门出了网络字节序和主机字节序之间的转换接口(ntohs、htons、ntohl、htonl)2. 大小端模式各有优势:小端模式强制转换类型时不需要调整字节内容,直接截取低字节即可;大端模式由于符号位为第一个字节,很方便判断正负。三、怎样判断大小端由于指针指向的是内存中的首位地址,原创 2023-04-07 10:30:18 · 718 阅读 · 0 评论 -
c语言—指针详解***内存地址***指针字节数***注意事项
初步认识指针、内存地址的概念内存地址地址的相关运算指针变量声明指针变量指针变量的字节数—根据操作系统的位数而不同指针的移动多级指针指针注意事项移动不越界定义指针不省 *初始空值可用NULL,内存地址即内存的地址,在创建变量时,计算机会分配一个内存空间用来存放变量,内存地址就是这个内存空间的地址,对每个字节来说都有自己的地址,在输出变量时,计算机就会找到这个变量的内存空间,从内存空间中取出变量。原创 2023-04-06 22:40:54 · 1836 阅读 · 0 评论