
C语言
文章平均质量分 86
WeeJot
嵌入式软件工程师
展开
-
【C语言】线程----同步、互斥、条件变量
同步(synchronization)指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。还是一个受保护的变量,只能通过三种操作来访问:初始化、P操作(申请资源)、V操作(释放资源)sem_wait: 申请资源,P操作, 如果没有资源可以用, 阻塞,-1。由信号量来决定线程是继续运行还是阻塞等待.信号量的值0,表示有资源可以用, 可以申请到资源,sem_post: 释放资源,V操作, 非阻塞 +1。通过信号量实现线程间的同步。原创 2025-01-16 00:00:00 · 1103 阅读 · 0 评论 -
【C语言】线程
私有的资源:线程ID (TID)、PC(程序计数器)和相关寄存器、堆栈(局部变量, 返回地址)、错误号 (errno)、信号掩码和优先级、执行状态和属性。1. 通过父子进程完成对文件的拷贝(cp),父进程从文件开始到文件的一半开始拷贝,子进程从文件的一半到文件末尾。共享的资源:可执行的指令、静态数据、进程中打开的文件描述符、信号处理函数、当前工作目录、用户ID、用户组ID。要求效率高、速度快的高并发环境时,需要频繁创建、销毁或切换时,资源的保护管理要求不是很高时,使用多线程。进程的地址空间相互独立。原创 2025-01-16 00:00:00 · 892 阅读 · 1 评论 -
【Liunx】库lib
当使用别人写好的函数时除了包含头文件还可以需要库头文件:函数声明、宏定义、结构体定、联合体、枚举定义、重命名、外部引用、其他头文件库:把一些常用的函数的目标文件打包在一起,提供相应的函数接口,便于程序员使用。本质上来说库是一种可执行代码的二进制形式文件。由于windows和linux的本质不同,因此而这库的二进制是不兼容的。(Linux中的C运行库是glibc, 由GUN发布。原创 2025-01-15 00:00:00 · 577 阅读 · 0 评论 -
【C语言】获取文件属性
S_IFMT是一个掩码,它的值是0170000(注意这里用的是八进制前缀为0,二进制为0b1111000000000000), 可以用来过滤出四位表示的文件类型。lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息.fstat函数获得已在描述符filedes上打开的文件的有关信息,也就是参数是文件描述符,其他与stat相同。4. 直到n为行数则停止。例:head -3 test.c -> ./a.out -3 test.c。原创 2025-01-14 00:00:00 · 450 阅读 · 0 评论 -
【C语言】文件IO
标准IO文件IO概念C库中定义的一组用于输入输出的函数posix中定义的一组用于输入输出的函数特点1. 有缓冲机制2. 围绕流进行操作,FILE*3. 默认打开三个流:stdin/stdout/stderr4. 只能操作普通文件5. 程序的可移植性更强1. 无缓冲机制2. 围绕着文件描述符,非负整数3. 默认打开三个文件描述符:0/1/24. 可以操作除了目录以外的任意类型文件函数打开文件:fopen、freopen关闭文件:fclose。原创 2025-01-14 00:00:00 · 1722 阅读 · 0 评论 -
【C语言】标准IO
1. 因为读写文件通常是大量的数据,这时使用标准IO可以大大减少系统调用的次数,从而提高效率。2. 为了保证可移植性关于缓存区: 库函数的缓冲区对于库函数,如果标准输出连到终端设备(直接输出到屏幕),则它是行缓冲的(遇到回车换行符或者是缓冲区满了才输出);否则(输出到文件)是全缓冲的(缓冲区填满或者是程序运行结束了才输出)。程序运行结束时,会刷新所有的缓冲区。原创 2025-01-13 09:27:03 · 976 阅读 · 0 评论 -
嵌入式系统(将软件嵌入到硬件里面)
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。原创 2025-01-06 00:00:00 · 1003 阅读 · 4 评论 -
C语言----函数、指针、数组
形参列表:和指向的函数的参数一致,此处形参列表可以只保留数据类型,变量名可以省略,如:int (*p)(int, int);h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。return 指针/地址;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数。e) 一个有10个指针的数组,该指针是指向一个整型数的。c)一个指向指针的的指针,它指向的指针是指向一个整型数。f) 一个指向有10个整型数数组的指针。本质是指针,指针指向函数的指针。b)一个指向整型数的指针。原创 2025-01-05 00:00:00 · 623 阅读 · 0 评论 -
C语言----共用体、枚举
不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。枚举是C语言中的一种构造数据类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。原创 2025-01-05 00:00:00 · 346 阅读 · 0 评论 -
C语言----结构体
用户自定义的数据类型,在结构体中可以包含若干个不同数据类型的成员变量(也可以相同),使这些数据项组合起来反应某一个信息。struct结构体名成员变量;struct 结构体名 变量名;int id;int age;char sex;return 0;struct 结构体名成员变量;}变量名;int id;int age;char sex;} stu;// 这个是全局的return 0;struct成员变量;} 变量名;int age;原创 2025-01-04 00:00:00 · 745 阅读 · 0 评论 -
C语言----函数
一个完成特定功能的代码模块。原创 2025-01-04 00:00:00 · 1296 阅读 · 0 评论 -
C语言----指针数组
本质是数组,里面存放的是指针。原创 2025-01-03 00:00:00 · 885 阅读 · 0 评论 -
C语言----指针
1.32位操作系统:指针为4字节, 64位操作系统:指针为8字节2. 内存地址是固定的,但是变量的地址不固定的(栈区随机分配)3. 指针类型根据指针指向空间的数据类型段错误1) 野指针,没有规定指向的指针会在内存中乱指,野指针产生原因1. 指针变量定义没赋值2. 指针 p被 free之后,没有置 NULL,会让人以为p是合法指针解决:int* p = NULL;原创 2025-01-03 00:00:00 · 1493 阅读 · 0 评论 -
C语言----数组
存储类型 数据类型 数组名[元素的个数];int arr[5];数组名:代表数组首元素的首地址,arr地址常量,不能为左值,不能被赋值。原创 2025-01-02 10:11:26 · 1455 阅读 · 0 评论 -
C语言----分支语句
首先定义循环变量并赋值,然后判断是否符合条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到判断条件不成立退出循环。练习:从终端上输入一个字符并在终端上输出这个字符,当输入字符为‘q’时,程序结束。练习:循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。2)if和else后面的{}可以省略,但是只能匹配之后的一条语句。即12321是回文数,个位与万位相同,十位与千位相同。continue:结束本次循环,继续下一次循环。根据你符合我不同的条件,去执行了不同的语句。原创 2025-01-02 10:08:17 · 501 阅读 · 0 评论 -
C语言----输入输出
m:位宽 // 当 m 大于实际位宽的时候,按 m 输出。// 当 m 小于实际位宽的时候,按照实际位宽输出。参数:format:字符串"hello"可以回收一个或多个的空格、回车、tab。参数:c:要输出字符的ascii值。返回值:输出字符的个数(不常用)返回值:要输出字符的ascii值。功能:按照指定的格式向终端输出。返回值:输入字符的ASCII值。返回值:正确输入数据的个数。参数:同 printf;功能:从终端输入一个字符。功能:向终端输出一个字符。.n:打印小数点后n位。-:左对齐,默认右对齐。原创 2024-12-28 00:00:00 · 587 阅读 · 0 评论 -
C语言----变量与常量
特点:只能单纯替换,不要进行手动的运算(原样替换,替换完再计算)auto(省略的时候默认就是auto类型) int num;2. 初值: 为赋初值时,值为随机值 为赋初值时,值为0。存储类型(一般存储类型是可以省略的) 数据类型 变量名。5. 作用域: 作用于函数体内部 作用于整个程序。float(占4字节)double(占8字节)1. 定义位置: 函数体内部 函数体外部。3. 存储位置: 栈区 全局区(静态区)有效数据 6-7位(一般是7位)概念:程序运行中不会发生变化的值。存储类型就是变量的存储位置。原创 2024-12-28 00:00:00 · 353 阅读 · 3 评论 -
C语言----词法符号
位运算符的位指的是二进制里的每一位,指的是 0 和 1 ,没有真假,因为它不是一个逻辑上的判断真假,而是让你去计算 0 和 1 通过这些位运算符算出来的结果到底是什么样的,按位进行操作了。其他(其他功能):void(空类型) typedef(重定义) const(常量化,是只读的)数据类型:char(字符型) short(短整型) int(整型) long(长整型)2) printf("%d\n", ++a);&(位与) |(位或) ^(异或) ~(取反) <<(左移) >>(右移)原创 2024-12-27 00:00:00 · 710 阅读 · 0 评论 -
C语言基础
词法符号就是你在程序设置的时候在里面规定的一些由几个字符组成的一些简单的有意义的最小的语法单位。原创 2024-12-27 00:00:00 · 1172 阅读 · 0 评论