
C语言
文章平均质量分 80
存放C语言的笔记
利刃大大
不怕山高,只怕腿软
展开
-
【C语言】内存函数详解与模拟实现
memcpy函数是一个用于拷贝两个不相关的内存块的函数。memcpy函数会从 src的位置开始向后复制 count个字节的数据到 dest的内存位置,并返回 dest的首地址。☢️memcpy函数在遇到 \0的时候并不会停下来。若 dest和 src有任意重叠,复制的结果都是未定义的(未拷贝内容被覆盖)。memcpy函数在实现的时候,不知道未来会被用来拷贝什么样的数据,所以参数的指针类型为 void*(可接收任意类型指针)。举个例子,比如我们要将 arr1。原创 2025-01-15 13:10:22 · 1422 阅读 · 0 评论 -
【C语言】字符串函数详解
strcpy函数是一个用于拷贝字符串的函数,即将一个字符串中的内容拷贝到另一个字符串中(会覆盖原字符串内容)。它的参数是两个指针,第一个指向的是拷贝字符串的目的地的起始位置,即要将字符串拷贝到什么地方;第二个指向的是要拷贝字符串的内容的起始位置,即需要拷贝的字符串。它的返回值是目标空间的起始位置。源字符串(需要被拷贝的字符串)必须以\0结束。会将源字符串中的\0一同拷贝到目标空间。目标空间必须足够大,以确保能存放源字符串。目标空间必须可变。 举个例子,比如我们要将 arr2。原创 2025-01-14 13:34:15 · 1754 阅读 · 0 评论 -
【C语言】程序翻译环境
我们用编译器写完代码后,只需 Crtl+F5即可让代码跑起来,最后将结果输出到屏幕上,那么你知道在这个过程中都经过了哪些步骤吗? 其实,在 ANSI C(标准C)的任何一种实现中,都存在两个不同的环境,即翻译环境和执行环境。翻译环境,在这个环境中,代码被转换为可执行的机器指令。执行环境,它用于实际执行代码。 我们运行代码时都将经历这两个过程,最后才将运行结果呈现在屏幕上。原创 2025-01-14 13:22:15 · 997 阅读 · 0 评论 -
【C语言】浮点型数据的存储详细讲解
2.按照上面的方法,把n的补码分解后发现它的E为全0,所以相当于一个无穷小的数字,所以此时。结果与我们想的有很大的偏差。1.首先,根据上面的实例,我们可以发现整型和浮点型数据的存储方法是不一样的!在引入知识之前,先来看一个案例,就知道了解浮点型数据存储的重要性与必要性。1.首先我们先把n的补码写出来,因为n是正数,所以它的原反补相同。浮点型数据存储是很重要的知识点,它也加强了我们对数据存储的了解!打印的就是n的值,只不过是以浮点型打印出来,所以是。,最后按照格式变成补码,存到内存中去,此时补码为。原创 2025-01-13 14:28:04 · 461 阅读 · 0 评论 -
【Linux系统编程】复习C语言中的文件操作
ferror:判断文件是否读取错误而结束,返回值为真,就是文件读取遇到了错误。feof:判断文件是否读到末尾而结束,返回值为真,就是读到了文件结束。 5、如果没有指明文件路径,默认在当前路径下进行文件访问。(Linux的文件内容和文件属性是分开存储的)(未打开文件的属于文件系统,后面我们会讲)也要在磁盘中占据空间。原创 2023-07-08 09:16:52 · 466 阅读 · 0 评论 -
【C语言】函数栈帧的创建和销毁(详细图解与解释!)
注:本文章所使用的编译器是VS2010,由于不同编译器的函数栈帧与销毁略有差异,所以具体细节请读者自行实践!目录常见寄存器基本的汇编语言知识具体实现关于栈帧创建与销毁的问答题常见寄存器寄存器有:eax、ebx、ecx、edx、edi、esi、ebp、esp其中 ebp 和 esp 是用来维护函数栈帧的,他们里面存放的是地址。他们维护的是某个正在被调用的函数。通常我们又称 ebp 为栈底指针,称 esp 为栈顶指针基本的汇编语言知识push:压栈pop:出栈mov:若有变量a,b,则把b的值原创 2022-05-05 21:18:24 · 459 阅读 · 8 评论 -
C/C++版动态通讯录(可保存信息)
1、思路以及要实现的功能通讯录就是为了存储许多联系人的不同方面的信息如名字、电话、地址、年龄、性别等,除此之外,还要实现增删查改还有打印通讯录等功能,所以我们先把要实现的功能列出来:增加联系人删除联系人搜索联系人修改联系人信息按年龄大小排序联系人打印联系人信息2、详细步骤2.1 打印菜单界面(建一个源文件test.c)void menu(){ printf("********************************\n"); printf("****** 1.add原创 2022-03-19 14:57:12 · 13508 阅读 · 11 评论 -
C/C++动态内存开辟详解(含常见错误以及经典面试题)
动态内存开辟1.四个重要的内存函数1.1 malloc和free1.2 calloc1.3 realloc2.常见错误2.1 对NULL指针进行解引用操作2.2 对动态开辟内存的越界访问2.3 使用free释放非动态开辟的空间2.4 使用free释放了动态开辟内存的一部分2.5 对同一块动态内存开辟的空间多次释放2.6 动态开辟的空间忘记释放,造成内存泄漏3.经典面试题第一题第二题第三题第四题1.四个重要的内存函数1.1 malloc和freeC语言提供了一个动态内存开辟的函数:void mall原创 2022-03-19 12:41:46 · 2358 阅读 · 6 评论 -
结构体的内存对齐规则
结构体内存对齐的规则以及默认对齐数的修改原创 2022-03-18 22:41:46 · 5493 阅读 · 8 评论 -
经典编程题:求水仙花数
文章目录什么是水仙花数?用C语言如何实现?什么是水仙花数?水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。用C语言如何实现?首先,先把我们的思路大概想好,分为以下几步:1.我们要求的是0-10w内的水原创 2022-02-15 22:01:18 · 1360 阅读 · 3 评论 -
【C语言】关于指针数组与数组指针详解(知识点全面)
单独使用时表示的是第 1 行数据,放在表达式中会被转换为第 1 行数据的首地址,也就是第 1 行第 0 个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第 0 个元素的指针;每一个一维数组又包含了 4 个元素,例如 arr[0] 包含 a[0][0]、a[0][1]、a[0][2]、a[0][3]。需要注意的是,字符数组 str 中存放的是字符串的首地址,不是字符串本身,字符串本身位于其他的内存区域,和字符数组是分开的。表明 p 是一个指针,它指向一个数组,数组的类型为。原创 2022-02-15 10:44:18 · 41100 阅读 · 20 评论 -
【C语言】杨辉三角的实现
想必大家在初高中就听过和学过杨辉三角,那么用C语言如何实现呢?要实现杨辉三角首先得先知道它的特征,以下是我找到的杨辉三角的特点:1.每行端点与结尾的数为12.每行数字左右对称,由1开始逐渐变大3.第n行的数字有n项4.每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即C(n+1,i)=C(n,i)+C(n,i-1)根据这些特点,我们便可以写出杨辉三角的代码:(代码虽长了点,但是..原创 2022-02-10 12:03:32 · 15310 阅读 · 4 评论