![](https://img-blog.csdnimg.cn/7cc839327878441f861f8c4fa5a238ce.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言进阶之路
文章平均质量分 97
无论你是编程新手,还是有一定基础的开发者,本专栏都将为你带来深入的C语言学习体验。让我们共同探索C语言的奥秘,不断提高自己的编程技能!
江池俊
C/C++领域新星创作者,阿里云专家博主,2023新星计划C/C++赛道top1,目前正在学习C、C++、Java、数据库、Linux等,期待与大家一起探索C/C++语言的奇妙世界,共同成就编程之路!
展开
-
通讯录详解(静态版,动态版,文件版)
在现代社会中,通讯录已经成为了我们生活中不可或缺的一部分。无论是工作还是生活,我们都需要一个可靠的通讯录来记录和管理我们的联系人信息。本文将介绍用C语言来实现一个通讯录管理系统,其中主要存储了若干联系人的信息,每个人的信息包括他们的姓名、年龄、性别、电话号码、住址等。增加联系人删除联系人查找联系人修改联系人打印通讯录排序通讯录退出程序在写通讯录前,我们需要创建工程,这里为了让大家养成模块化的好习惯,我们尽量将代码分成三个文件来写。原创 2023-11-06 12:37:31 · 906 阅读 · 79 评论 -
程序环境+预处理 | 预编译、编译、汇编、链接 | 宏定义(#define)| #undef | 条件编译
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。语法:#define reg register //为 register这个关键字,创建一个简短的名字;) //用更形象的符号来替换一种实现case //在写case语句的时候自动把 break写上。原创 2023-10-30 20:32:42 · 379 阅读 · 64 评论 -
C语言文件操作(详解)
在C语言中,文件被看作是数据源的一种。它能够存储在磁盘或其他存储设备上,提供了一种便捷的方式来读取和写入数据。(即磁盘上的文件是文件程序文件、数据文件(从文件功能的角度来分类的)。ferror和feof是C语言中用于文件操作的函数,它们分别用于检查文件错误和文件结束。ferror函数用于检查文件是否发生了错误。它接受一个文件指针作为参数,并返回一个非零值(真)或零(假),表示文件是否发生了错误。如果文件发生了错误,ferror函数将返回一个非零值,否则返回零。feof函数用于检查文件是否已经到达文件末尾。原创 2023-10-25 11:02:55 · 1243 阅读 · 73 评论 -
动态内存管理+柔性数组+经典笔试题
头文件均为stdlib.h忘记释放不再使用的动态开辟的空间会造成内存泄漏。切记:动态开辟的空间一定要释放,并且正确释放。只有当我们完全不再需要动态分配的内存时,才应该释放它,而且不要试图释放不属于我们的内存。原创 2023-10-15 20:59:53 · 706 阅读 · 94 评论 -
【自定义类型】--- 位段、枚举、联合 | 结构体内存对齐 | offsetof宏
位段是一种结构体成员,它允许你定义成员占用的位数。这样,你可以在一个字节(或更大的内存单元)中将不同的位用于不同的数据,而不是整个字节。这有助于节省内存,并在某些情况下提高性能。位段的成员必须是int或signed int。位段的成员名后边有一个冒号和一个数字。type是成员的数据类型,通常是int或其他整数类型。memberName是成员的名称。指定了成员占用的位数。enum Day//星期Mon,Tues,Wed,Thur,Fri,Sat,Sun。原创 2023-10-02 12:56:17 · 876 阅读 · 147 评论 -
内存函数(memcpy、memmove、memset、memcmp)你真的懂了吗?
当我们谈论内存函数时,我们在讨论什么呢?简单来说,内存函数是用于处理和操作内存的函数。这些函数在程序运行期间分配、释放和操作内存,对于程序的性能、效率和稳定性至关重要。在编程语言的发展历程中,内存函数始终占据着重要的地位,尤其是在现代编程中,它们的意义更为突出。本文将深入探讨内存函数的相关知识,旨在帮助读者更好地理解这一领域,并提高在现代编程中的技能。原创 2023-09-30 16:34:38 · 950 阅读 · 104 评论 -
不可忽视的字符函数与字符串函数 | strlen、strcpy、strcat、strcmp | strncpy、strncat、strncmp | strstr、strtok
在编程中,字符函数和字符串函数是非常重要的工具。它们可以用于处理字符串、操作字符和执行各种操作,如转换大小写替换字符查找子字符串等等。掌握这些函数可以帮助我们编写更高效、更易于维护的代码。C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。原创 2023-09-27 10:44:02 · 564 阅读 · 90 评论 -
掌握指针和数组:经典笔试题攻略(万字详解)
当涉及到计算机编程的核心概念时,指针和数组无疑是最重要和基础的话题之一。无论你是初学者还是有经验的开发者,深入理解和掌握这两个概念都能让你的编程技能得到质的提升。在本篇博客中,我们将带你进入指针和数组的精彩世界,探索其在编程中的作用和应用。无论你是为了笔试准备,还是为了提升自己的技能,这里都将为你提供一个深入学习的机会。在本篇文章中如有遇到不懂的知识点,可以参考以下文章《掌握指针进阶:探索字符指针、数组指针和指针数组的妙用》《掌握指针进阶:一篇带你玩转函数指针、函数指针数组及指向函数指针数组的指针!原创 2023-08-25 15:58:56 · 1919 阅读 · 167 评论 -
深入理解回调函数qsort:从入门到模拟实现
回调函数和qsort是 C语言编程中重要的概念,它们为我们提供了强大的工具,用于处理函数指针和数组排序。本篇博客将逐步介绍回调函数的概念,详细解释qsort函数的用法,并通过一个模拟实现,帮助初学者更好地理解这些概念。如果大家不知道函数指针是说明或还不清楚函数指针的内容,可以移步我这篇文章《掌握指针进阶:一篇带你玩转函数指针、函数指针数组及指向函数指针数组的指针!!回调函数是一种通过函数指针传递给其他函数,并由其他函数在适当时候调用的函数。原创 2023-08-23 22:14:03 · 1301 阅读 · 122 评论 -
掌握指针进阶:一篇带你玩转函数指针、函数指针数组及指向函数指针数组的指针!!
数组是一个存放相同类型数据的存储空间,那我们已经学习了指针数组//数组的每个元素是int*那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?答案是:parr1parr1先和[]结合,说明parr1是数组,数组的内容是什么呢?是int (*)()类型的函数指针。转移表总之,函数指针数组实际上是一个数组,其元素都是指向函数的指针。这使得我们可以将不同的函数存储在数组中,并通过索引来调用特定的函数。原创 2023-08-18 13:24:53 · 882 阅读 · 135 评论 -
掌握指针进阶:探索字符指针、数组指针和指针数组的妙用
在指针的类型中我们知道有一种指针类型为字符指针char*int main()*pc = 'w';return 0;int main()//这里是把一个字符串放到pstr指针变量里了吗?//其实不是,因为想放也放不下,pstr是四个字节,而字符串明显比四个字节大//那么pstr里面存放的到底是什么呢?return 0;代码 const char* pstr = "hello world.";特别容易让同学以为是把字符串 hello world放到字符指针pstr 里了.原创 2023-08-17 10:45:00 · 1181 阅读 · 136 评论 -
【C语言进阶】数据的存储----浮点型篇
浮点数在计算机内部的存储方式由IEEE 754标准定义,它将浮点数分为单精度和双精度,每种表示都有符号位、指数部分和有效数字部分。了解浮点数的内存表示有助于我们更好地理解浮点数的行为,预测计算结果,并在编程中避免潜在的精度问题。在进行涉及浮点数的计算时,始终要考虑到浮点数表示可能引起的舍入误差,以获得正确的结果。。原创 2023-08-05 17:54:53 · 1322 阅读 · 166 评论 -
【C语言进阶】数据的存储----整型篇 | 什么是大小端?| 怎么判断大小端?| 大小端存储图解!!
基本的内置类型:1. char占1个字节----->字符数据类型2. short占2个字节-----> 短整型3. int占4个字节----->整形4. long占4/8个字节----->长整型占8个字节-----> 更长的整形6. float占4个字节-----> 单精度浮点数7. double占8个字节-----> 双精度浮点数注意C语言中没有字符串类型类型的意义:内存占用和范围:不同的数据类型在内存中占用不同的字节数,并且能够表示的数值范围也不同。原创 2023-08-04 22:22:41 · 858 阅读 · 143 评论