自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 嵌入式学习|C语言篇进程间通信(IPC)全面解析与示例

现代操作系统通过虚拟内存技术为每个进程创建独立的地址空间,这种隔离机制保障了系统的安全性,但也导致进程无法直接访问彼此的内存数据。使用单向数据通道,通过pipe()系统调用创建,返回两个文件描述符(fd[0]读端,fd[1]写端)struct sembuf sb = {0, -1, 0};mkfifo /tmp/myfifo # 命令行创建。if (pid == 0) { // 子进程。// 类似清理其他信号量和共享内存。} else { // 父进程。

2025-02-24 21:07:39 829

原创 # 嵌入式基础学习|C语言——进程篇综合(含进阶)

进程是操作系统进行资源分配和调度的基本单位,通过 fork() 系统调用可以创建子进程,实现并发执行。父子进程拥有独立的内存空间,数据修改不会相互影响。进程的状态和关系可以通过 ps、pstree 等命令查看,进程的终止可以通过 kill 命令实现。拓展:在多核CPU环境下,进程可以并行执行,进一步提升系统性能。此外,进程间通信(IPC)机制如管道、消息队列、共享内存等,可以实现进程间的数据交换和协作。代码示例:以下是一个简单的多进程并发处理任务的示例:c。

2025-02-21 21:35:50 1666

原创 手把手教你如何打印出文件或目录的详细信息(超细版)

/ 打印用户ID和用户名。// 打印组ID和组名。

2025-02-17 20:04:30 940

原创 [特殊字符] C语言中打开和关闭文件的两种方法:标准库 VS 系统调用

在C语言的世界里,文件操作是编程的基础技能之一。无论是处理文本数据、读取配置文件,还是进行复杂的文件读写操作,掌握文件的打开和关闭方法是必不可少的。今天,我将带你深入了解C语言中两种常见的文件操作方式:标准输入输出库(stdio.h) 和 系统调用(fcntl.h 和 unistd.h)。这两种方法各有特点,适用于不同的场景。让我们一起探索它们的奥秘吧!

2025-02-16 22:29:35 1741

原创 那些数据库函数那些事儿

"123" --- 文本文件 --- '1''2''3' //每个数据是按照固定的编码格式存放的 -ASCII。成功 FILE*指针 //文件指针 流指针 --- 从程序上讲,FILE *指针就代表打开的这个文件。stderr //标准出错 --- 屏幕 --- 可以专门把错误信息输出到 stder。(1).处理缓冲区分配 (缓存--提高效率 --- 慢速 快速)@pathname --- 要打开的文件名 //字符串形式的名字。@c //要输出的字符 ---ascii码值。

2025-02-13 22:48:53 1048 1

原创 嵌入式基础学习|C语言篇——结构体(含进阶)二

在上述union Data的例子中,如果int类型占4个字节,float类型也占4个字节,char类型占1个字节,那么union Data占用的内存空间为4个字节,因为它要保证能容纳下最大的成员int或float。• 数据解析:在网络通信或文件格式解析中,可能会接收到不同类型的数据,但它们在内存中的存储格式是特定的,这时可以使用共用体来方便地解析数据。// 此时data.i的值是有效的,data.f和data.c的值是不确定的。所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

2025-02-11 01:43:27 604

原创 嵌入式基础学习|C语言篇——预处理(含进阶)

常见指令:`#include`, `#define`, `#ifdef`, `#ifndef`, `#endif`, `#if`, `#else`, `#elif`, `#error`, `#pragma` 等。- 参数替换:`#define MAX(a, b) ((a) > (b)?人类语言 --->编程语言(C语言)---汇编语言--->机器语言(01010)#define SQUARE(x) ((x) * (x)) // 正确。- `#ifdef` / `#ifndef`:检查宏是否已定义。

2025-02-09 22:55:45 995

原创 嵌入式基础学习|C语言篇——结构体(含进阶)

/64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐。//定义了一个学生类型的结构体变量。pstr //必须是 之前 申请到的堆区内存空间的地址。//堆区 --- 空间很大,但是需要手动申请,手动释放。@size ---说明,要申请的空间的大小。//此时 表示 定义了一个 学生信息 的 结构体类型。1.结构体成员的对齐 --- 放在自然边界 (偶数位置)2.结构体整体的对齐 --- 以结构体中最大的成员对齐。//结构体类型 定义 --- 定义(从无到有) 声明()

2025-02-09 22:45:39 567

原创 嵌入式基础学习|C语言篇——指针(含进阶)二

int cmpFunc(const void *a, const void *b) //a 和 b 获得到是 要比较的数组中的两个元素的地址。int (*compar)(const void *, const void *) //指向一个比较规则的 函数。int[4] *p = //数组指针 --- 指向的数据类型 是一个 数组类型。const char *p //const 此时是限定基类型的 --表示将基类型限定为只读。int (*p)(int a,int b) // C语言正确的语法形式。

2025-02-08 22:16:11 549

原创 嵌入式基础学习|C语言篇——指针(含进阶)一

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针 定义一个指针变量:基类型 * 指针变量名;(1) 基类型 ---- 基类型表示 地址(指针) 指向的目标空间存储的数据的类型(2) * ---- 表明此时定义的变量 为指针类型的变量。

2025-02-07 20:51:39 1829

原创 嵌入式基础学习|C语言篇——数组与函数(含进阶)二

形参 --- 字符型数组形式的形参 //不需要数组长度--- 因为字符型一维数组中主要存放的是 字符串数据。实参 --- 数组名 //因为字符串数据,本身有结束标志,此时不需要数组长度。形参 --- 字符型数组形式的形参 //不需要数组长度--- 因为字符型一维数组中主要存放的是 字符串数据。形参 --- 字符型二维数组形式的形参,行数的形参。实参 --- 二维数组数组名,行数 字符型 一维数组。形参 --- 二维数组形式的形参,行数的形参。

2025-01-21 20:24:53 663

原创 嵌入式基础学习|C语言篇——函数(含进阶)一

void printArray(int *a)//本质上 --数组传参 只是把数组所在空间的首元素地址传过去了。类型标识符 --- 写数据类型的 --- 表示的函数处理完之后,要带出的结果的类型 ---函数名 --- 体现函数功能 --- 命名规则 符合标识符命名规则。函数传参 --- 值传递 (将实参的值传递给形参变量 ==相当于是赋值)//数组元素 做函数参数 --- 和普通变量做函数参数 用法一样。函数的形参 --- 数组形式形参,数组长度的形参。---形参变量不能这样写。

2025-01-20 21:43:50 697 2

原创 嵌入式基础学习|C语言篇——数组(含进阶)二

src //表示存放 源字符串的空间的首地址。src //表示存放 源字符串的空间的首地址。dest //表示存放 目的字符串的空间的首地址。dest //表示存放 目的字符串的空间的首地址。将src中的字符串拷贝到dest中。

2025-01-19 21:36:23 495

原创 嵌入式基础学习|C语言篇——数组(含进阶)一

/ --- 表示 是这么一类数据--- 能够存放30个int型变量的 这一类数据。// --- 表示 是这么一类数据--- 能够存放30个int型变量的 这一类数据。常量表达式 //整型的数值 --- 数组中元素的个数 ---数组长度。//int[30] //数组类型。//int[30] //数组类型。//数组初始化为0了。(3).[常量表达式] --- [] //就表示 数组。

2025-01-17 21:32:37 918

原创 聪明的你能分清楚C语言中有哪些流程控制不

4.default 不一定写在最后,如果写在了前面,后面一定要写break。后面大括号内的语句,输出 “这个数大于 5”;如果条件为假,则执行。1.switch 也可以处理if-else 这种问题。2.switch 可以实现多种情况,对应同一种操作。3.case default 实际上只是语句的标签。结构,用于处理多个条件分支。在这个例子中,首先定义了变量。后面大括号内的语句。

2025-01-16 21:36:22 635

原创 在C语言运算符中原来它才是老大!

(5) % (模运算符,或称求余运算符,%两侧均应为整型数据,如 7%4 的值为 3)。(10) 强制类型转换运算符 ((类型))(l) +加法运算符,或正值运算符,如 (3+5、+3);(2) -(减法运算符,或负值运算符,如 5-2、-3);(9) 求字节数运算符 (sizeof)(11) 分量运算符 (. ->)(12) 下标运算符 ([ ])(3) * (乘法运算符,如 3 * 5);(7) 逗号运算符 (,)

2025-01-15 20:49:23 507

原创 C语言的输出与输入

c -- 转换为 数值 对应 字符形式 输出 --- 键盘输入的 都可以被当作字符 %c 都能识别。%e -- 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0。%e -- 转换为 科学计数法形式 输出,指数部分 会显示 正负号 如果是一位数 则会补个0。%X -- 转换为 十六进制形式 输出 输出结果中字符 都是大写形式。%X -- 转换为 十六进制形式 输出 输出结果中字符 都是大写形式。%c -- 转换为 数值 对应 字符形式 输出。

2025-01-15 19:54:16 889

原创 C语言的字符常量及其含义及用法

除了以上形式的字符常量外,C还允许用一种特殊形式的字符常量,就是以一个字符 "\"开头的字符序列。例如,前面已经遇到过的,在 printf 函数中的"\n"'它代表一个“换 行”符。这是一种“控制字符"'在屏幕上是不能显示的,在程序中也无法用一个一般形式 的字符表示,只能采用特殊形式来表示。图 3-8 cl 、c2 被指定为字符变量。字符型变量用来存放字符常量,它只能放一个字符,不要以为在一个字符变量中可以 放一个字符串(包括若干字符)。如‘a','b','A','?注意,'a'和'A'是不同的字符常量。

2025-01-14 20:53:09 561

原创 数据类型 运算符 和 表达式

long long //长长整型 所占字节数 sizeof(long long) = 8。(1)整型 123 //十八进制 0123//八进制 0x123//十六进制。使c1,c2,c3,c4,c5分别为'G','l','m','r','e',然后输出。48~57 '0'~'9' //数字字符 与 数值 之间转化。这5个变量分别为'C','h','i','n','a',经过运算,分别赋值为 'h','e','l','l','o''0' - 48 //数值。

2025-01-13 20:13:16 839 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除