- 博客(31)
- 收藏
- 关注
原创 C语言--位段(Struct)
文章摘要:位段是一种特殊的结构体类型,其成员必须是整型且带有指定bit位数。位段通过按需分配内存来节省空间(以4字节或1字节为单位),但由于内存分配方式、方向等标准未定义,导致位段存在跨平台问题。位段适用于需要节省空间的场景(如网络协议),但使用时需注意不能对成员取地址,且赋值时需防止数据溢出。位段虽能优化空间效率,但可移植性差,应谨慎使用。
2025-11-14 21:56:19
831
原创 C语言--结构体(Struct)
本文介绍了C语言结构体的基本概念和使用方法。首先解释了结构体是不同类型变量的集合,并展示了结构体的声明和变量创建方式。然后详细说明了结构体的初始化、使用以及特殊声明(匿名结构体)。在结构体自引用部分,指出正确方式应使用指针而非直接嵌套。文章重点讲解了结构体内存对齐规则,包括对齐数的计算和总大小的确定,并通过示例演示了不同排列方式对内存占用的影响。最后介绍了如何通过#pragma指令修改默认对齐数。全文强调了结构体设计中空间与时间的权衡,以及合理组织成员变量以节省内存的重要性。
2025-11-14 21:56:02
721
原创 C语言--详解--冒泡排序(Bubble Sort)
本文详细介绍了冒泡排序算法的实现过程。首先通过两两比较相邻元素实现交换操作,然后构建一次冒泡排序函数。算法优化包括:1)每次冒泡后缩减数组比较范围;2)当某次冒泡没有发生交换时提前终止排序。文中给出了完整的C语言实现代码,包含Swap交换函数、单次冒泡Sort函数和总排序Bubble_Sort函数。代码通过判断交换次数进行优化,提高了排序效率。最后展示了测试用例和排序结果验证。
2025-11-14 18:30:00
375
1
原创 C语言--typedf关键字
本文介绍了C语言中typedef关键字的使用方法及其优势。typedef主要用于类型重命名,可以将复杂类型简化,如typedef unsigned int uint。文章展示了如何用typedef定义指针类型(typedef int* ptr_t)、数组指针(typedef int(*paar_t)[10])和函数指针(typedef int (*pf_t)(int, int)),并举例说明了它们在变量声明和函数调用中的便捷用法。typedef能简化代码书写,使逻辑更直观,但对代码阅读者可能造成一定理解障碍
2025-11-14 18:30:00
346
原创 C语言--详解--指针--下
在指针的类型中我们知道有一种指针类型为字符指针char*;即代码const char* pstr = arr;特别容易让人以为是把字符串hello bit 放到字符指针pstr 里了,但是本质是把字符串arr. 首字符的地址放到了pstr中。
2025-11-14 13:04:51
825
原创 C语言--详解--指针--中
上一个博客中,我提到过我们发现数组名和数组首元素的地址打印出的结果一模一样,数组名就是数组首元素(第一个元素)的地址。这时候会有疑问?数组名如果是数组首元素的地址,那下面的代码怎么理解呢?输出的结果是:40,如果arr是数组首元素的地址,那输出应该的应该是4/8才对。其实数组名就是数组首元素(第一个元素)的地址是对的,但是有两个例外:•,sizeof中单独放数组名,这里的数组名,计算的是整个数组的大小,单位是字节•,这里的数组名,取出的是(整个数组的地址和数组首元素的地址是有区别的)
2025-11-12 13:58:34
856
原创 C语言--详解--指针--上
本文主要介绍了内存和地址的概念,以及指针变量在C语言中的应用。内存被划分为一个个内存单元,每个单元大小为1字节,通过地址(指针)来高效管理。取地址操作符(&)用于获取变量地址,指针变量存储这些地址,解引用操作符()用于访问指针指向的数据。指针变量的大小取决于平台(32位为4字节,64位为8字节),而指针类型决定了操作权限和步进大小。此外,void指针可接收任意类型地址但不支持直接运算。指针的基本运算包括指针加减整数和指针相减等操作。这些概念为理解内存管理和指针操作提供了基础。
2025-11-10 10:15:00
885
原创 C语言--const关键字
本文介绍了C语言中const修饰指针变量的用法。首先说明const修饰变量使其变为只读变量(常变量),但仍可通过指针间接修改。然后重点分析const修饰指针的三种情况:1) const在左边,限制指针指向内容不可修改但指针本身可变;2) const在右边,限制指针本身不可修改但指向内容可变;3) const在两侧,限制指针本身和指向内容都不可修改。总结出关键规则:const修饰谁,谁就不可变。对于const int * p是p不可变,int * const p则是p不可变。
2025-11-10 10:00:00
194
原创 C语言--static与extern关键字
static 和 extern 都是C语言中的关键字。static 是 静态的 的意思,可以用来:• 修饰局部变量• 修饰全局变量• 修饰函数extern 是用来声明外部符号的。
2025-11-07 19:40:18
863
原创 C语言--函数(function)
本文系统介绍了C语言中函数的概念和使用方法。主要内容包括:1)函数的基本概念,指出函数是完成特定任务的一段代码,可分为库函数和自定义函数;2)库函数的使用,包括标准库、头文件及sqrt函数的实例;3)自定义函数的语法形式和加法函数示例;4)形参和实参的区别,说明形参是实参的临时拷贝;5)return语句的使用注意事项;6)数组作为函数参数的使用方法;7)嵌套调用和链式访问的概念及实例;8)函数的声明与定义规则。文章通过具体代码示例详细阐述了C语言函数的各项特性,为学习函数编程提供了全面指导。
2025-11-07 19:37:33
615
原创 C语言--操作符(operator)--下
本文介绍了C语言中的逗号表达式、下标引用操作符和函数调用操作符的使用方法及特性。重点分析了操作符的两个重要属性——优先级和结合性,它们决定了表达式的运算顺序。文章通过多个示例说明了复杂表达式可能导致的歧义问题,指出优先级和结合性并不能完全确定运算顺序,建议避免书写过于复杂的表达式。文中还提供了不同运算符的优先级参考表格,并强调某些表达式的计算结果是不可预测的,取决于编译器的具体实现。
2025-11-06 11:00:00
640
原创 C语言--操作符(operator)--上
本文介绍了C语言中的操作符分类和数值表示方法。主要内容包括:1)操作符的定义及分类;2)二进制、八进制、十进制、十六进制的转换方法;3)原码、反码和补码的概念,重点说明计算机使用补码的原因;4)移位操作符(左移和右移)的使用规则和注意事项;5)位操作符(按位与、或、异或、取反)的功能和运算规则。通过具体代码示例和图示详细解释了各种操作符的计算过程,帮助理解计算机底层数据处理机制。
2025-11-06 00:11:27
1037
原创 chrome浏览器出现闪退奔溃-桌面重新刷新(桌面图标变白后又刷新恢复)等类似问题
摘要:作者在调试N卡游戏滤镜时发现Chrome浏览器出现异常崩溃并导致桌面图标刷新。经过排查显卡驱动冲突、插件更新、硬件加速设置等尝试后,最终发现问题根源在于系统自动更新时在默认路径安装了新版本Chrome,而旧版本仍保留在原路径(D:\chrome\Google)。这导致双击启动时版本冲突。解决方法包括:终止所有Chrome进程、删除旧版安装目录和快捷方式、创建新快捷方式。文章附带了自动处理该问题的批处理脚本示例(需根据实际路径调整)。建议避免直接使用示例代码,而应根据个人系统环境修改路径参数。
2025-09-24 20:17:21
714
原创 Visual Studio(VS)初始配置环境(scanf异常)
当我们第一次安装Visual Studio(VS)且没有初次环境配置时,用某些函数时会发现报错异常。(如下scanf函数为例)报错结果为:这里报错显示的是:这函数或者变量可能不安全,考虑使用scanf_s替换。想让这个描述失效的话,使用"#define _CRT_SECURE_NO_WARNINGS 1"。scanf_s不是c语言提供的函数,而是当前使用的VS中提供的函数,如果你的代码中使用这个函数的话,那么你的代码在其他编译器上是不能编译通过的。(即代码无法跨平台使用)
2025-02-08 19:25:21
840
原创 Visual Studio(VS)没有显示垂直滚轮or垂直滚轮异常显示
前段时间,我换上了新电脑。满心欢喜地安装好 VS,准备大干一场时,却发现了一个小麻烦 —— 垂直滚轮显示异常(如图 1)。这种显示方式实在让我难以适应,每一次操作都觉得别扭。于是,我开始在网络上四处搜寻解决办法。各大技术论坛、专业网站,我都翻了个遍,照着网友分享的方法一一尝试,可问题一直都没能解决。我并没有轻易放弃。经过长达半个小时的反复摸索,我不断调整设置,终于找到了解决方法,成功解决了这个困扰我的问题。故写该博客,如果你也有这样的困惑,希望能帮帮你。
2025-02-07 23:41:11
1461
原创 C语言--指针--01
在讲内存和地址之前,我们想有个⽣活中的案例:假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找玩如果想找到你,就得挨个房⼦去找,这样但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如:⼀楼:101,102,103…⼆楼:201,202,203…等等⽣活中,每个房间有了房间号,就能提⾼效率,能快速的找到房间。如果把上⾯的例⼦对照到计算机中,⼜是怎么样呢?
2025-02-03 11:17:32
704
原创 C语言--动态内存管理
栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内存容量有限。栈区主要存放运⾏函数⽽分配的局部变量、函数参数、返回数据、返回地址等。堆区(heap):⼀般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统( Operating System)回收。分配⽅式类似于链表。数据段(静态区):(static)存放全局变量、静态数据。程序结束后由系统释放。
2025-01-30 22:10:49
607
原创 C语言--联合和枚举
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员是可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是。所以联合体也叫:共⽤体。给。
2025-01-27 02:15:47
499
2
原创 C语言--scanf
当我们有了变量,我们需要给变量输⼊值就可以使⽤ scanf 函数,如果需要将变量的值输出在屏幕上的时候可以使⽤ prinf 函数。
2024-10-21 01:32:36
824
7
原创 C语言--printf
printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的,表⽰可以定制输出⽂本的格式。printf() 是在标准库的头⽂件 stdio.h 定义的。使⽤这个函数之前,必须在源码⽂件头部引⼊这个头⽂件上⾯命令会在屏幕上输出⼀⾏⽂字“Hello World”。printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换⾏。为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n。
2024-10-17 19:00:30
610
原创 C语言-数据类型
C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。使⽤整型类型来描述整数使⽤字符类型来描述字符使⽤浮点型类型来描述⼩数所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。数据类型可分为内置类型与自定义类型:字符型:保留字符的整型浮点型布尔类型C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真。在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的。_Bool布尔类型的使⽤得包含头⽂件
2024-09-26 13:58:32
869
2
原创 C语言常见概念
• main 被写成了mian• main后边的()漏掉了• 代码中不能使⽤中⽂符号,⽐如括号和分号• ⼀条语句结束后,有分号C语⾔中有⼀批保留的名字的符号。⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。• 关键字都有特殊的意义,是保留给C语⾔使⽤的• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的• 关键字也是不能⾃⼰创建的。
2024-09-13 22:36:43
1270
4
原创 分支循环 1.0
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实。我们可以使⽤ if 、 switch 实现选择结构,使⽤ for 、 while 、 do while 实现循环结构。
2024-07-30 00:12:10
601
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅