c语言
文章平均质量分 87
Never-SayNever
这个作者很懒,什么都没留下…
展开
-
linux 驱动
驱动认知1. 什么是驱动驱动就是对底层硬件设备的操作进行封装,并向上层提供函数接口。设备分类:linux系统将设备分为3类:字符设备、块设备、网络设备。 字符设备:指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等,字符设备驱动程序通常至少要实现open、close、read和write的系统调用,字符终端(/dev/console)和串口(/dev/ttyS0转载 2022-05-25 21:29:28 · 4924 阅读 · 0 评论 -
文件操作与IO多路复用.md
select是通过描述符位图的方式监视文件描述符集合的可读写状态。调用select会阻塞直到有描述符就绪或超时,监视这些描述符,返回就绪的描述符集合。poll使用链表的数据结构监视描述符集合,可以更高效地监视大数量的描述符。epoll使用一个epoll实例来管理多个文件描述符,而不是直接操作文件描述符集合。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。C++中的输入输出都是建立在流的概念之上的。在上面的示例中,我们使用。原创 2023-08-10 11:21:03 · 215 阅读 · 0 评论 -
函数指针,二级指针,指针数组,函数指针的转换
#include <stdio.h>#include <string.h>char * fun1(char * p){printf("fun1:%s\n",p);return p;}char * fun2(char * p){printf("fun2:%s\n",p);return p;}char * fun3(char * p){printf(...原创 2018-04-08 17:10:14 · 231 阅读 · 0 评论 -
计算机的大小端存储
内存地址存储的最小数据大小就是字节,例如一个变量char temp的地址0x10000000,temp值为0x55,由于char类型只占用一个字节,那么temp变量就只占用0x10000000这个内存地址,不会占用其他内存地址,那假如变量是个int型呢?这里有几个概念:高地址,低地址,高位,低位,其中高地址,低地址是针对内存地址而言,高位,低位是针对数据类型的bit位的高低而言。当基本数据类型占用字节数超过了1字节后,大小端决定了数据按照什么顺序存储在内存里。大小端只针对基本数据类型。原创 2023-02-01 11:49:55 · 211 阅读 · 0 评论 -
同步模型(synchronous IO)IO多路复用
同步模型(synchronous IO)IO多路复用网络应用需要处理的无非就是两大类问题,网络IO,数据计算。相对于后者,网络IO的延迟,给应用带来的性能瓶颈大于后者。网络IO的模型大致有如下几种:1: 同步模型(synchronous IO)阻塞IO(bloking IO)非阻塞IO(non-blocking IO)多路复用IO(multiplexing IO)信号驱动式IO(signal-driven IO)2: 异步IO(asynchronous IO)相对于同步IO,异步IO不是顺序执翻译 2022-04-16 15:38:17 · 485 阅读 · 0 评论 -
IPC进程线程
进程进程:进程是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,是操作系统及进行资源分配和调度的基本单位。注意:一次任务的运行可以激活多个进程。进程是一个程序的执行的过程,是动态的,包括程序的创建、调度、消亡进程具有并发性、动态性、交互性、独立性等主要特性1.并发性:指的是系统中多个进程可以同时并发执行,相互之间不受干扰。——马路上两个汽车各跑各的,互不影响2.动态性:指的是进程都有完整的生命周期,而且在进程的生命周期内,进程的状态时不断变化的,进程具有动态的地址空间3.交互原创 2022-03-21 23:36:50 · 376 阅读 · 0 评论 -
c语言数组
#include<stdio.h>#include<string.h>int main(){ //char a[5]={'1','2','3','4'}; char a[5]="1234"; struct {int a;int b;} st ; st.a =1; st.b=2; ...原创 2018-04-10 10:42:31 · 2403 阅读 · 0 评论 -
vsnprintf和snprintf
vsnprintf和snprintf是C语言printf家族函数的成员,相关函数列表如下:#include <stdio.h>int printf(const char *format, ...); //输出到标准输出int fprintf(FILE *stream, const char *format, ...); //输出到文件int sprintf(char *str, const c转载 2017-11-22 11:15:46 · 520 阅读 · 0 评论 -
C++中的虚函数(表)实现机制以及用C语言对其进行的模拟实现
https://blog.twofei.com/496/前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过基类的指针去调用函数时, 可以在运行时决定该调用基类的函数还是继承类的函数. 虚函数是实现多态(动态绑定)/接口函数的基础. 可以说: 没有虚函数, C++将变得一无是处!既然是C++的精髓, 那么我们有必...翻译 2017-10-20 16:21:08 · 211 阅读 · 0 评论 -
C语言函数中局部变量的返回
http://blog.csdn.net/misskissc/article/details/10757975 http://blog.csdn.net/jackystudio/article/details/11523353C/C++中,函数内部的一切变量(函数内部局部变量,形参 )都是在其被调用时才被分配内存单元。子函数运行结束时,所有局部变量的内存单元会被系统释放。形参和函数内部的局部变量的转载 2017-07-17 11:02:43 · 1126 阅读 · 0 评论 -
c/c++混合编程
c/c++混合编程1.C++调用C函数共有三个文件:1.h 1.c main.cpp[root@localhost aa]#cat 1.h#ifndef _1__H_#define _1__H_extern void print(char* );#endif[root@localhost aa]#cat 1.c#include <stdio.h>#include "1.h"v转载 2017-05-10 09:33:20 · 344 阅读 · 0 评论 -
内存与对于返回局部指针变量的思考
我们大家都知道指针函数的返回指针不能指向函数内的自动变量,如果需要返回函数的内部变量的话,就需要将该变量声明为静态变量。为什么函数能够返回 静态变量的地址而不能返回局部自动变量的地址,到底什么样的对象能够返回其地址,而什么样的对象不能够返回其地址?静态变量与局部自动变量的主要区别是什 么? 要想明白这些就需要理解程序的内存布局情况 程序的存储区域分为:代码段、只读数据转载 2017-04-12 12:15:45 · 280 阅读 · 0 评论 -
Linux中的动态库静态库
linux.调用dll#include main(){void *handle=dlopen("./libdemo4.so",RTLD_LAZY);void(*fun)(int)=dlsym(handle,"diamond");fun(5);dlclose(handle);}使用libdl.so库 动态库加载的原理原创 2017-04-29 21:21:34 · 9009 阅读 · 0 评论 -
内存地址笔记
The smallest unit ofmemory is a binary digit (bit), which can hold a value of 0 or 1. You can thinkof a bit as being like a traditional light switch -- either the light is off(0), or it is on (1). The原创 2017-04-29 20:52:54 · 213 阅读 · 0 评论 -
Linux TCP 传输协议
Linux TCP vs UDP 网络编程网络模型:ISO(理论)7 VS TCP/IP(实际)4应用层 -> 应用层 http/ftp/ssh表示层会话层传输层 -> 传输层 TCP/UDP网络层 -> 网际层 路由器(IP)IPCM/ARP链路层 -> 数据链路层 网卡/交换原创 2017-04-09 14:29:49 · 333 阅读 · 0 评论 -
Linux 进程 vs 线程
进程:资源管理的最小单位,独占内存空间线程:调度的最小单位,在进程中创建,共享内存空间。函数调用 步骤 线程 进程 创建 pthread_create fork 退出 pthread_exit/pthread_cancel exit/__exit 等待 pthread_join wait#include <stdio.h>#include <原创 2017-04-09 08:55:02 · 227 阅读 · 0 评论 -
补码 原码 反码
原码:在数值前直接加一符号位的表示法 [+7]原= 0 0000111 B [-7]原= 1 0000111 B反码 : 正数的反码与原码相同。 负数的反码,符号位为“1”,数值部分按位取反。 [+7]反= 0 0000111 B翻译 2017-03-23 15:10:49 · 564 阅读 · 0 评论