C语言
文章平均质量分 91
学习C语言的专栏
jiaway
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C语言】第八课 输入输出与文件操作
概念/操作标准I/O (缓冲I/O)底层I/O (系统调用,无缓冲I/O)核心对象FILE结构体指针 (文件流)文件描述符 (fd) - 整数打开fopen()open()关闭fclose()close()读取fread()fscanf()fgetc()fgets()read()写入fwrite()fprintf()fputc()fputs()write()定位fseek()ftell()rewind()lseek()优点带缓冲,通常效率更高;移植性好;格式化读写方便。原创 2025-09-16 00:00:06 · 756 阅读 · 0 评论 -
【C语言】第七课 字符串与危险函数
理解C风格字符串和危险函数是C编程和逆向分析的基石。'\0'终止符是生命线,缓冲区边界是高压线。通过调试器亲眼目睹栈溢出如何覆盖返回地址,是理解整个漏洞机理最直观的方式。在开发中,务必摒弃危险的函数,采用安全替代方案,并利用现代系统的保护机制,从根本上减少漏洞的产生。原创 2025-09-15 23:50:39 · 665 阅读 · 0 评论 -
【C语言】第六课 联合体(Union)和位域(Bit-field)
使用unionint i;// 整型成员float f;// 浮点成员// 字符数组成员内存共享:所有成员共享同一段内存,联合体的大小由其最大成员决定(例如上例中约为20字节,取决于和系统对齐规则)。访问成员:使用点操作符访问联合体变量的成员,若通过指针访问则使用箭头操作符->。// 此时联合体存储的是整数// 写入浮点数,覆盖之前的整数值初始化:联合体初始化时只能初始化其第一个成员。// 正确:初始化第一个成员i// C99后允许指定初始化成员,但仍需注意覆盖。原创 2025-09-15 00:27:48 · 1311 阅读 · 0 评论 -
【C语言】第五课 结构体与内存对齐
结构体(struct)允许你将多个不同类型的变量组合成一个单一的复合类型,这在表示现实世界的实体(如学生、商品等)时非常有用。定义结构体:使用struct关键字来定义一个新的结构体类型。/* 定义一个名为Student的结构体类型 */// 姓名int age;// 年龄// 身高/* 方式1: 定义类型的同时声明变量 */int x;int y;} p1, p2;// 变量p1和p2/* 方式2: 先定义类型,再声明变量 */// 另一个Point变量还可以使用typedef。原创 2025-09-12 00:31:30 · 595 阅读 · 0 评论 -
【C语言】第一课 环境配置
补一下C语言原创 2025-09-04 16:42:47 · 909 阅读 · 0 评论 -
【C语言】 第三课 函数与栈帧机制详解
栈是程序运行时内存中的一块特殊区域,遵循“后进先出”(LIFO, Last In First Out) 的原则。它主要用于支持函数调用。栈的生长方向是从高地址向低地址扩展。每次函数调用,操作系统都会在栈上为其分配一块独立的连续内存区域,称为栈帧(Stack Frame) 或活动记录函数执行结束后,其对应的栈帧被销毁。存储函数的参数保存返回地址:函数执行完后需要回到调用者的位置存储函数的局部变量保存调用函数的栈帧基址:以便被调函数返回后能恢复调用函数的栈帧提供临时数据的存储空间。原创 2025-09-04 23:22:15 · 750 阅读 · 0 评论 -
【C语言】第二课 基础语法
本文介绍了C语言的基本结构、数据类型、输入输出、运算符与表达式以及控制流语句。主要内容包括:1)C程序的基本框架,强调main函数的必要性和预处理器指令的作用;2)基本数据类型(int、float、double、char)及其用法,变量命名规则和常量定义方法;3)格式化输入输出函数printf和scanf的使用;4)算术、关系、逻辑和赋值运算符的应用;5)条件语句if-else和选择语句switch-case的语法结构。全文通过代码示例详细说明了各知识点的具体实现方式,为C语言初学者提供了系统的基础知识概览原创 2025-09-04 22:32:54 · 561 阅读 · 0 评论 -
【C语言】第四课 指针与内存管理
指针是一个变量,其存储的值是另一个变量的内存地址。你可以将内存想象成一个巨大的公寓楼,每个字节是一个房间,每个房间都有唯一的门牌号(地址)。指针就是记录着这些门牌号的便签。声明指针数据类型 *指针变量名;int *p;// 指向整型的指针char *ch;// 指向字符型的指针float *fp;// 指向浮点型的指针表示这是一个指针变量,数据类型说明了指针所指向的内存区域中存储的数据类型。初始化指针:使用(取地址操作符)获取变量的地址。int a = 10;// p 指向变量a的地址。原创 2025-09-04 23:24:45 · 793 阅读 · 0 评论 -
【C语言】第二课 位运算
逐位比较,只有两个对应的位都为1时,结果位才为1。常用于屏蔽(清零)特定位或检查特定位是否为1。2. 按位或(|)逐位比较,只要两个对应的位中有一个为1,结果位就为1。常用于将特定位设置为1。3. 按位异或(^)逐位比较,如果两个对应的位不同,则结果位为1;相同则为0。常用于翻转特定位或交换两个变量的值而不使用临时变量。4. 按位取反(~)将操作数的每一位取反(0变成1,1变成0)。这是一个单目运算符。注意:对无符号整数和有符号整数进行取反操作,其结果的理解有所不同。将操作数的二进制位整体向左原创 2025-09-04 23:03:57 · 670 阅读 · 0 评论
分享