C语言基础
C语言学习中···
lcannal
大四boy目前正在实习,Java转战 android + ios
展开
-
C语言-头文件
由于自定义的头文件一般放在源码文件的周围,因此需要在编译的时候通过特定的选项来指定位置,而系统头文件都统一放在标准路径下,一般无需指定位置。由于头文件包含指令 #include 的本质是复制粘贴,并且一个头文件中可以嵌套包含其他头文件,因此很容易出现一种情况是:头文件被重复包含。.c),当某些公共资源需要在各个源码文件中使用时,为了避免多次编写相同的代码,一般的做法是将这些大家都需要用到的公共资源放入头文件(其中,/home/gec/pro/inc 是自定义头文件 head.h 所在的路径。原创 2024-07-08 16:58:35 · 433 阅读 · 0 评论 -
C语言-条件编译
选择代码片段:在一些大型项目中(例如 Linux 内核),某个相同功能的模块往往有不同的实现,需要用户根据具体的情况来“配置”,这个所谓的配置的过程,就是对代码中不同的宏的选择的过程。以上语句中,-D意味着 Define,MACRO 是程序中用来控制调试语句的一个宏,如此一来就可以在完全不需要修改源代码的情况下,通过外部编译指令选项非常方便地控制调试信息的启停。控制调试语句:在程序中,用条件编译将调试语句包裹起来,通过gcc编译选项随意控制调试代码的启停状态。原创 2024-07-08 16:47:18 · 316 阅读 · 0 评论 -
C语言中的#include和objc中的#import有什么区别
#include` 和 `#import` 都是用于包含头文件的指令。原创 2024-05-02 00:15:00 · 249 阅读 · 0 评论 -
C语言-宏定义3.0
这篇文章讨论了在C语言中如何使用预处理器宏来进行符号粘贴。作者首先介绍了宏定义的基本结构,然后提供了一个示例,展示了如何使用`##`操作符来将参数连接到预定义的标识符中,从而形成一个新的标识符。接着,作者提醒了读者在书写非字符串的字串时要注意使用两边双井号来粘贴字串,并注意处理字串出现在末尾和非末尾的情况。最后,作者总结了在使用`#`和`##`操作符时的注意事项,并提供了示例代码以说明其用法。原创 2024-05-01 01:00:00 · 129 阅读 · 0 评论 -
C语言-宏定义2.0
这篇文章介绍了C语言中的宏的两种类型:无参宏和带参宏。无参宏在预处理阶段直接进行文本替换,而带参宏类似于函数,可以携带参数进行替换。然而,宏的替换仅仅是简单的文本替换,不进行语法检查或数值运算,可能导致一些副作用。为了避免这种副作用,应该在宏定义中使用括号括起参数和整个表达式。最后,文章总结了带参宏的特点和注意事项。原创 2024-05-01 00:30:00 · 207 阅读 · 0 评论 -
C语言-宏定义
这段文本详细介绍了C语言中的预处理部分,包括预处理的概念、预处理指令的种类和基本语法。其中,重点讨论了常见的预处理指令如#include、#define、条件编译等,并提供了一个示例命令来演示如何使用GCC编译器进行预处理操作。此外,文章还介绍了宏的概念和作用,以及在代码中的使用方法和好处。原创 2024-04-30 00:30:00 · 610 阅读 · 0 评论 -
C语言-联合体的使用
枚举类型的本质是提供一种范围受限的整型,比如用0-6表示七种颜色,用0-3表示四种状态等,但枚举在C语言中并未实现其本来应有的效果,直到C++环境下枚举才拥有原本该有的属性。枚举数据最重要的作用,是使用有意义的单词,来替代无意义的数字,提高程序的可读性。联合体一般很少单独使用,而经常以结构体的成员形式存在,用来表达某种互斥的属性。原创 2024-04-25 08:51:41 · 219 阅读 · 0 评论 -
C语言-联合体操作
联合体的操作跟结构体形式上别无二致,但由于联合体特殊的存储特性,不管怎么初始化和赋值,最终都有且。仅有一个成员是有效的。原创 2024-04-25 08:45:34 · 305 阅读 · 0 评论 -
C语言-联合体基本概念
联合体的外在形式跟结构体非常类似,但它们有一个本质的区别:结构体中的各个成员是各自独立的,而联合体中的各个成员却。,因此联合体也称为共用体。原创 2024-04-24 17:23:43 · 242 阅读 · 0 评论 -
C语言-结构体尺寸
字长的概念指的是处理器在一条指令中的数据处理能力,当然这个能力还需要搭配操作系统的设定,比如常见的32位系统、64位系统,指的是在此系统环境下,处理器一次存储处理的数据可以达32位或64位。从图中可以明显看出,数据本身占据了8个字节,在地址未对齐的情况下,CPU需要分3次才能完整地存取完这个数据,但是在地址对齐的情况下,CPU可以分2次就能完整地存取这个数据。以32位系统为例,由于CPU存取数据总是以4字节为单元,因此对于一个尺寸固定的数据而言,当它的地址满足某个数的整数倍时,就可以保证地址对齐。原创 2024-04-24 17:03:00 · 903 阅读 · 0 评论 -
C语言-结构体基本概念2.0
结构体是一种集合,内部包含了多个独立的成员,每个成员都可以被单独引用。通过成员引用符 `.` 可以简单地访问结构体的各个成员。结构体数组的使用方式与普通数组类似,可以通过索引访问数组中的每个结构体元素,再通过成员引用符 `.` 访问各个成员的值。结构体指针和结构体数组的定义与普通变量的指针和数组类似,能够更灵活地处理结构体对象。原创 2024-04-23 11:49:23 · 172 阅读 · 0 评论 -
C语言-结构体基本概念
struct 结构体标签成员1;成员2;// ...- 结构体标签用于区分不同的结构体。- 成员是结构体内部包含的数据,可以是任意的数据类型。原创 2024-04-23 11:13:51 · 733 阅读 · 0 评论 -
C语言-存储期
在栈内存中分配的变量,统统拥有自动存储期,因此也都被称为自动变量。这里自动的含义,指的是这些变量的内存管理不需要开发者操心,都是全自动的:在变量定义处自动分配,出了变量的作用域后自动释放。C语言中,变量都是有一定的生存周期的,所谓生存周期指的是从分配到释放的时间间隔。为变量分配内存相当于变量的诞生,释放其内存相当于变量的死亡。从诞生到死亡就是一个变量的生命周期。原创 2024-03-15 19:48:41 · 241 阅读 · 0 评论 -
C语言-存储期2.0
在数据段中分配的变量,统统拥有静态存储期,因此也都被称为静态变量。这里静态的含义,指的是这些变量的不会因为程序的运行而发生临时性的分配和释放,它们的生命周期是恒定的,跟整个程序一致。在堆中分配的变量,统统拥有自定义存储期,也就是说这些变量的分配和释放,都是由开发者自己决定的。由于堆内存拥有高度自治权,因此堆是程序开发中用得最多的一片区域。原创 2024-03-15 19:48:25 · 232 阅读 · 0 评论 -
C语言内存管理-堆内存
堆内存(heap)又被称为动态内存、自由内存,简称堆。堆是唯一可被开发者自定义的区段,开发者可以根据需要申请内存的大小、决定使用的时间长短等。但又由于这是一块系统“飞地”,所有的细节均由开发者自己把握,系统不对此做任何干预,给予开发者绝对的“自由”,但也正因如此,对开发者的内存管理提出了很高的要求。对堆内存的合理使用,几乎是软件开发中的一个永恒的话题。原创 2024-03-11 10:06:05 · 358 阅读 · 0 评论 -
C语言内存管理-数据段与代码段
【代码】C语言内存管理-数据段与代码段。原创 2024-03-11 09:58:21 · 200 阅读 · 0 评论 -
C语言内存管理-静态数据
【代码】C语言内存管理-静态数据。原创 2024-02-29 17:10:16 · 251 阅读 · 0 评论 -
C语言内存管理-栈内存
【代码】C语言内存管理-栈内存。原创 2024-02-26 13:11:05 · 169 阅读 · 0 评论 -
C语言内存管理-C进程内存布局
每个C语言进程都拥有一片结构相同的虚拟内存,所谓的虚拟内存,就是从实际物理内存映射出来的地址规范范围,最重要的特征是所有的虚拟内存布局都是相同的,极大地方便内核管理不同的进程。虚拟内存中,内核区段对于应用程序而言是禁闭的,它们用于存放操作系统的关键性代码,另外由于 Linux 系统的历史性原因,在虚拟内存的最底端 0x0 ~ 0x08048000 之间也有一段禁闭的区段,该区段也是不可访问的。这些不同的内容,所存储的内存区域是不同的,且不同的区域有不同的特性。原创 2024-02-26 13:08:21 · 419 阅读 · 0 评论 -
C语言作用域2.0
如果有多个不同的作用域相互嵌套,那么小范围的作用域会临时 “遮蔽” 大范围的作用域中的同名标识符,被 “遮蔽” 的标识符不会消失,只是临时失去可见性。C语言的一大特色,是相同的关键字,在不同的场合下,具有不同的含义。原创 2024-02-23 18:53:50 · 347 阅读 · 0 评论 -
C语言作用域
软件开发中,尽量缩小标识符的作用域是一项基本原则,一个标识符的作用域超过它实际所需要的范围时,就会对整个软件的命名空间造成污染,导致一些不必要的名字冲突和误解。C语言中,标识符都有一定的可见范围,这些可见范围保证了标识符只能在一个有限的区域内使用,这个可见范围,被称为作用域(scope)。原创 2024-02-23 18:47:37 · 376 阅读 · 0 评论 -
C语言字符串函数strchr与strrchr
【代码】C语言字符串函数strchr与strrchr。原创 2024-02-22 09:25:54 · 252 阅读 · 0 评论 -
C语言字符串函数strcmp与strncmp
【代码】C语言字符串函数strcmp与strncmp。原创 2024-02-21 08:46:51 · 198 阅读 · 0 评论 -
C语言字符串函数strcpy与strncpy
strncpy()是具备边界检查的安全版本,推荐使用。原创 2024-02-21 08:45:20 · 271 阅读 · 0 评论 -
C语言字符串函数strcat与strncat
strncat()是具备边界检查的安全版本,推荐使用。原创 2024-02-20 10:43:51 · 290 阅读 · 0 评论 -
C语言特殊函数
递归调用时,函数的栈内存的变化如下图所示。可见,随着递归函数的层层深入,栈空间逐渐往下增长,如果递归的层次太深,很容易把栈内存耗光。背景知识:普通函数都是跨文件可见的,即在文件 a.c 中定义的函数可以在 b.c 中使用。层层递进时,问题的规模会随之减小,减小到可直接退出的条件时,函数开始层层回归。概念:函数实现方不调用该函数,而由函数接口提供方间接调用的函数,称为回调函数。递归概念:如果一个函数内部,包含了对自身的调用,则该函数称为递归函数。示例:系统中的信号处理,是一个典型的利用回调函数的情形。原创 2024-02-20 09:47:09 · 1086 阅读 · 0 评论 -
C语言字符串函数strtok
【代码】C语言字符串函数strtok。原创 2024-02-19 15:18:07 · 197 阅读 · 0 评论 -
C语言字符串函数strlen
【代码】C语言字符串函数strlen。原创 2024-02-19 15:11:44 · 126 阅读 · 0 评论 -
C语言字符串函数strstr
【代码】C语言字符串函数strstr。原创 2024-02-18 17:44:30 · 138 阅读 · 0 评论 -
C语言局部变量与栈内存
【代码】C语言局部变量与栈内存。原创 2024-02-18 17:17:15 · 428 阅读 · 0 评论 -
C语言函数调用的流程
函数调用时,进程的上下文会切换到被调函数,当被调函数执行完毕之后再切换回去。函数调用时代码的执行流程。原创 2024-02-18 09:34:36 · 160 阅读 · 0 评论 -
C语言函数的实参与形参
【代码】C语言函数的实参与形参。原创 2024-02-14 21:40:23 · 478 阅读 · 0 评论 -
C语言函数的定义
【代码】C语言函数的定义。原创 2024-02-14 21:39:30 · 200 阅读 · 0 评论 -
C语言函数入门
日常使用的电视机可以被理解为一个典型的黑箱,它有一些公开的接口提供给使用者操作,比如开关、音量、频道等,使用者不需要理会其内部电路,更不需要管电视机的工作原理,只需按照规定的接口操作接口得到结果。对于函数的设计者,最重要的工作是封装,封装意味着对外提供服务并隐藏细节。对于一个封装良好的函数而言,其对外提供服务的接口应当是简洁的,内部功能应当是明确的。对于函数的使用者,可以简单地将函数理解为一个黑箱,使用者只管按照规定给黑箱一些输入,就会得到一些输出,而不必理会黑箱内部的运行细节。原创 2024-02-12 22:01:29 · 220 阅读 · 0 评论 -
C语言特殊指针
char型指针实质上跟别的类型的指针并无本质区别,但由于C语言中的字符串以字符数组的方式存储,而数组在大多数场合又会表现为指针,因此字符串在绝大多数场合就表现为char型指针。2.常目标指针:const修饰指针的目标,表示无法通过该指针修改其目标。1.常指针:const修饰指针本身,表示指针变量本身无法修改。原创 2024-02-12 21:29:32 · 2013 阅读 · 1 评论 -
C语言特殊数组
【代码】C语言特殊数组。原创 2024-02-11 09:20:03 · 438 阅读 · 0 评论 -
C语言指针2.0
可以指向一个指向字符串指针的指针的变量。是一个指向函数的指针,这个函数接受一个。可以指向具有特定参数和返回类型的函数。类型的变量(字符串指针)。类型的指针的指针的指针。可以指向一个长度为3的。是一个指向长度为3的。原创 2024-02-11 09:19:34 · 934 阅读 · 0 评论 -
C语言字符串常量
【代码】C语言字符串常量。原创 2024-02-10 08:57:49 · 236 阅读 · 0 评论 -
C语言数组下标运算符[ ]
数组运算,等价于指针运算。原创 2024-02-10 08:57:29 · 304 阅读 · 0 评论 -
C语言数组名涵义
C语言中的数组,在不同场合下有不同的含义,大部分场合都表现为首元素的地址,此时实际上就是一个指向其首元素的指针。数组运算实际上就是指针运算。原创 2024-02-09 18:07:19 · 331 阅读 · 0 评论