
C语言学习
文章平均质量分 88
.WHY..
这个作者很懒,什么都没留下…
展开
-
C语言——常见的字符串函数+内存操作函数的介绍及实现
文章目录前言一、字符串函数1.求字符串长度 strlen2.长度不受限制的字符串函数strcpy、strcat、strcmp字符串拷贝 strcpy字符串追加拷贝 strcat字符串比较 strcmp3.长度受限制的字符串函数strncpy、strncat、strncmp字符串拷贝 strncpy字符串追加拷贝 strncat字符串比较 strncmp4.判断字符串匹配问题 strstr5.字符操作字符分类函数字符转换函数二、内存操作函数1.memcpy2.memmove二、库函数模拟实现1.strlen2原创 2021-03-22 21:21:41 · 875 阅读 · 0 评论 -
C语言——栈和队列的概念、结构及实现
文章目录前言一、栈1.栈的概念及结构1.栈的实现二、队列1.队列的概念及结构2.队列的实现前言栈和队列是两种常用的数据结构,因此,了解他们的概念、结构和实现方法是十分基础且必要的。一、栈1.栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的压入操作叫做进栈/压栈/入栈,如数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也原创 2021-03-10 22:53:25 · 665 阅读 · 0 评论 -
Linux调试——gdb调试器的简单使用&&调试coredump文件
文章目录一、背景二、gdb的指令与使用1.gdb的基本指令。2.gdb指令的简单使用1. vim一个简单的sum.c文件:2. 使用gcc -g指令,生成可以gdb的文件:3. gdb + 文件名,进入调试模式:总结一、背景程序的发布方式有两种,debug和release模式Linux gcc/g++出来的二进制程序,默认是release模式要使用debug模式,必须在源代码生成二进制程序的时候,加上-g选项!二、gdb的指令与使用1.gdb的基本指令。首先列举下gdb调试器的基本指令。原创 2021-03-06 19:16:34 · 1807 阅读 · 4 评论 -
C语言——程序的编译+链接(linux+gcc实现过程)
文章目录前言一、预处理1.预处理阶段的操作:1.预处理过程实现:二、编译1.编译阶段的操作:2.编译过程的实现:三、汇编1.汇编阶段的操作:2.汇编过程的实现:四、链接1.链接阶段的操作:2.链接过程的实现:前言一个程序要运行,一定要经历四个步骤。依次是: 预处理、编译、汇编和链接。那么接下来就依次拆解这些过程来更好的理解程序是如何运行起来的。首先简述一下各步骤的内容:预处理:展开头文件/宏替换/去掉注释/条件编译编译 :检查语法,生成汇编代码汇编:把汇编代码转成二进制机器码写入目标文件链原创 2021-02-17 12:27:19 · 677 阅读 · 0 评论 -
C语言——整形数据的存储
C语言——整形数据的存储前言一、原反补码二、大小端计算机对数据的存储方式可分为大端存储和小端存储模式。三、整形的截断与提升1.整形截断2.整形提升举例说明前言C语言中整形数据的存储主要有三个重点。1、原反补码 2、大小端 3、整形截断和提升一、原反补码原码、反码、补码是计算机中对数字的二进制表示方法。原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。反码:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码.原创 2021-02-10 21:17:31 · 934 阅读 · 0 评论 -
C语言——双向带头循环链表的增删查改及优缺点
文章目录前言一、双向带头循环链表1.双向带头循环链表结构1.双向带头循环链表实现代码二、双向带头循环链表优缺点1.双向带头循环链表优缺点2.顺序表优缺点前言链表的结构有很多种,其中用的比较多的就是单向不带头不循环链表和双向带头循环链表,这两种链表都有各自应用的场合。双向带头循环链表结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。今天就用C语言来实现一下带头双向链表的增删查改。一、双向带头循环链表1.双向带头循环链表结构首先:来看一下双向带头循环链表的结构原创 2021-02-02 21:01:43 · 3356 阅读 · 0 评论 -
C语言之动态内存管理与动态内存函数
文章目录一、为什么存在动态内存分配?二、动态内存函数的介绍1.malloc和free2.calloc函数3.realloc函数一、为什么存在动态内存分配?学习动态内存的管理方法之前,我们需要先探讨一个问题,为什么需要动态内存分配呢?首先,观察如下代码:int i = 20;char arr[10]={0};可以观察到,上面的代码分别在栈空间上开辟了4个字节和10个字节的空间,但上述开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译原创 2021-01-19 12:07:21 · 316 阅读 · 1 评论 -
关于C语言中的结构体内存对齐与位段问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录结构体的内存对齐与位段一、结构体的内存对齐1.为什么会有内存对齐?2.如何内存对齐3. 如何在设计结构体的时候,既要满足对齐,又要节省空间二、位段1.什么是位段2.位段的内存分配3.位段的跨平台问题总结结构体的内存对齐与位段一、结构体的内存对齐1.为什么会有内存对齐?为了计算结构体的大小,首先要了解的就是结构体内存对齐。那么为什么会存在内存对齐呢,大部分参考资料如是说:平台原因(移植原因): 不是所有的硬件平台都能访问原创 2021-01-18 14:43:55 · 510 阅读 · 0 评论 -
浅谈C语言的基本数据类型
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、C语言中的数据类型1.单位2.数据类型3.为什么出现这么多的类型?总结前言学习内容梳理。一、C语言中的数据类型1.单位谈数据类型之前,首先需要了解一下计算机的存储单位。首先,计算机由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。因此,计算机内部采用二进制存储信息。一个 二进制位包含的信息量称为比特(Bit)、比特就是组成信息的最小单位。接下来由小到大谈一谈其原创 2020-12-18 12:09:58 · 1725 阅读 · 2 评论