
C语言基础资料
文章平均质量分 96
haixin-561
这个作者很懒,什么都没留下…
展开
-
C语言 :进程通信
文章目录前言一、邮槽(MailSlot)1: Mailslots 概述:2: Mailslot Names(邮槽的命名):3 : 实例:4:相关 Win32 API :二、共享内存 (shared memory),文件映射1.共享文件和内存概述 [官方链接](https://docs.microsoft.com/en-us/windows/win32/memory/sharing-files-and-memory)2. 实例:3:相关 Win32 API:三、共享内存 (shared memory),文件原创 2020-11-01 22:50:19 · 2211 阅读 · 0 评论 -
C语言:二级指针的使用示例
一:二级指针作为函数输入参数dome1:#include <stdio.h>#include <stdlib.h>//输出数组元素void printStrArr(char **arr,int len){ if (arr==NULL||len==0) { return; } for (int i = 0; i < len;i++) { printf("%s\n", *(arr + i)); //printf("%s\n", arr[i]);原创 2020-07-19 19:05:10 · 1609 阅读 · 0 评论 -
C语言 :UI 窗口类程序
示例代码:/* Windows C UI 窗口界面*/#include<Windows.h>//消息回调函数声明LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR sz...转载 2020-03-28 14:20:48 · 8159 阅读 · 3 评论 -
C语言:动态DLL生成与调用
动态库 DLL:#include<Windows.h>//导出变量_declspec(dllexport) int num = 100;//导出函数_declspec(dllexport) void run(){ MessageBoxA(0, "TEST", "DLL", 0);}修改项目属性:注意字符集调用:#include<stdio.h&g...原创 2020-03-22 14:41:36 · 753 阅读 · 0 评论 -
C语言:网络通信 - UDP简单通信Dome
服务端代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<winsock.h> //网络通信#pragma comment(lib,"ws2_32.lib")#define MSGLEN 25...原创 2020-03-21 19:37:13 · 447 阅读 · 0 评论 -
C语言:网络通信 - TCP简单通信Dome
服务端:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<winsock.h> //网络通信#pragma comment(lib,"ws2_32.lib")void main(){ c...原创 2020-03-19 22:31:38 · 962 阅读 · 0 评论 -
C语言 :文件操作4 文本文件的遍历和批量修改
一:dos dir 指令遍历文件目录,输出到文件显示目录文件和子目录列表。如果在没有参数的情况下使用,则 dir 显示磁盘的卷标和序列号,后接磁盘上目录和文件的列表,包括它们的名称和最近修改的日期及时间。dir 可以显示文件的扩展名以及文件的字节大小。Dir 也显示列出的文件及目录的总数、累计大小和磁盘上保留的可用空间(以字节为单位)命令语法:dir [Drive:][Path][FileN...原创 2020-03-14 22:05:13 · 1599 阅读 · 0 评论 -
C语言 :文件操作3 文件的分割与合并
文件分割示意图:代码:#define _CRT_SECURE_NO_WARNINGS //去掉安全检查#include<stdlib.h>#include<stdio.h>#include<string.h>//源文件路径char path[100] = "G:\\软件包\\软件\\WPS2015.exe"; /* 获取(二进制)文...原创 2020-03-14 18:30:48 · 1534 阅读 · 0 评论 -
C语言 :文件操作 -2 文件指针和文件分类读写
C语言获取文件大小:#define _CRT_SECURE_NO_WARNINGS //去掉安全检查#include<stdlib.h>#include<stdio.h>#include<string.h>char path1[100] = "C:\\Users\\whx\\Desktop\\test.txt"; //文本文件char pat...原创 2020-03-01 21:33:22 · 457 阅读 · 0 评论 -
C语言 :文件操作 -1 文本文件的打开关闭和复制
C语言 文件操作的方式:C 语言把所有设备都当作文件处理。C语言程序在操作文件的步骤:打开 --> 读写 --> 关闭。打开是获取文件结构,系统为文件分配缓存区的过程,不打开就不能对文件进行操作。关闭是释放缓存区和其它资源的过程,只代开不关闭系统资源就可能被耗尽。系统有三个标准设备文件,这三个无需打开和关闭:stdin:标准输入文件指针,系统分配为键盘。 stdout:标...原创 2020-02-29 22:45:02 · 908 阅读 · 0 评论 -
C语言: 多线程(3)-事件和互斥量
事件(信号)创建函数:CreateEventA函数:创建或打开一个命名或未命名的事件对象。要为对象指定访问掩码,请使用CreateEventEx函数。函数原型:HANDLE CreateEventA( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL ...原创 2020-01-13 23:00:17 · 1211 阅读 · 0 评论 -
C语言: 多线程(2)-线程的停止和创建
函数:_endthread() 和_endthreadex()_endthread是自动删除线程句柄,而_beginthreadex是需要在结束线程后手动关闭句柄。终止线程:_endthread终止由_beginthread创建的线程,并_endthreadex终止由_beginthreadex创建的线程。可以显式调用_endthread或_endthreadex以终止线...原创 2020-01-12 17:10:23 · 5310 阅读 · 0 评论 -
C语言: 多线程(1)-多线程函数调用
异步执行函数线程Dome调用MSVC CRT的函数_beginthread()或_beginthreadex()来创建线程。_beginthread 参数和返回值unsigned long _beginthread(void(_cdecl *start_address)(void *), //声明为void (*start_address)(void *)形式 ,一般指函数名称un...原创 2020-01-11 23:54:14 · 6279 阅读 · 0 评论 -
C语言: 链表 -- (环形双链表)
环形双链表示意图:Dome:#pragma once#include<stdio.h>#include<stdlib.h>/*节点数据结构*/typedef struct node{ int data;//值 struct node* pPer;//上一节点 struct node* pNext;//下一节点}NODE,*PNODE;...原创 2020-01-05 15:58:15 · 436 阅读 · 0 评论 -
C语言: 链式正向栈与链式反向栈
堆栈(stack): 后进先出(Last_In First_Out , LIFO)的数据模型。下面两个都是基于链表实现的栈数据模型链式正向栈 Dome/************************************************************FileName : linkstack.hAuthor : wang Version : v1....原创 2020-01-04 11:51:58 · 391 阅读 · 0 评论 -
C语言: 基于链表的内存管理Dome
基于单链表(也可以用数组)实现的程序内存管理,对内存的安全释放和开辟空间大小以及地址的管理和数据展示。头文件:mymemory.h#pragma once#include<stdio.h>#include<stdlib.h>/* 记录开辟内存*/void* mymalloc(size_t size);/* 记录释放内存*/void myf...原创 2020-01-03 22:22:23 · 524 阅读 · 0 评论 -
C语言:链表 -3(环形单链表)
环形单链表基于环形单链表的增删改查。源代码:/************************************************** 文件: circularLinked.h 环形单链表头文件 ----------------------------------------------- 函数: ... -----------------------------...原创 2020-01-01 22:06:07 · 277 阅读 · 0 评论 -
C语言: 结构体数据操作
基于文本和结构体的数据操作:包含文件读写。头文件:#pragma once#include<stdio.h>#include<stdlib.h>#include<string.h>/*文件路径存储长度*/#define MAX_PATH_LEN 128/*文件数据字节数*/#define MAX_LEN 1024/*配置文件路径,...原创 2019-12-28 16:14:09 · 1071 阅读 · 0 评论 -
C语言: 线性表Dome
基于数组实现的线性表:包含增删查改头文件:arraytable.h#pragma once#include<stdio.h>#include<stdlib.h>#include<memory.h>#define DATA_TYPE intstruct array{ DATA_TYPE* pStart;//数组首地址 int le...原创 2019-12-28 16:03:40 · 268 阅读 · 0 评论 -
C语言: 多线程示例
多线程查找数据-1#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#include<process.h>#include<Windows.h>int flag = 0;//全局变量,用于线程通信/* ...原创 2019-12-18 22:00:36 · 1938 阅读 · 0 评论 -
C语言: 队列与多线程
队列:头文件:queue.h#pragma once#include<stdio.h>#include<stdlib.h>#include<memory.h>#define LEN 100 // 队列长度/*线性队列*/struct queue{ int data[LEN]; int head; //头 int back; //...原创 2019-12-17 22:01:18 · 1366 阅读 · 0 评论 -
C语言:链表 -2(双链表)
头文件:list.h#pragma once#include<stdio.h>#include<stdlib.h>/* 声明双链表节点元素*/typedef struct LIST_NODE{ int value; struct LIST_NODE *per;//向前指针 struct LIST_NODE *next;//向后指针}node;...原创 2019-12-15 15:42:07 · 200 阅读 · 0 评论 -
C语言: 动态分配内存
动态分配内存动态分配,是指用户可以在程序运行期间根据需要申请或释放内存,大小也完全可控。动态分配不像数组内存那样需要预先分配空间,而是由系统根据程序需要动态分配,大小完全按照用户的要求来,当使用完毕后,用户还可释放所申请的动态内存,由系统回收,以备他用。malloc和free是C标准库中提供的两个函数,用以动态申请和释放内存。malloc()函数的基本调用格式为:void *mal...原创 2019-12-14 17:22:33 · 668 阅读 · 0 评论 -
C语言: 指针 -3
函数指针:原创 2019-12-14 13:22:53 · 463 阅读 · 0 评论 -
C语言: 指针 -2
一 指针的运算指针可以作为算数运算,赋值运算和关系运算表达式的有效操作。但是,并非所有在这些表达式中使用运算符都可以处理指针变量。指针只能参与有限的几种算数运算。指针可以进行增 1 (++) 和 减 1(--),给指针加上一个整数(+或+=),从指针中减去一个整数(-或-=),以及用一个指针减去另外一个指针这几种运算。示例:#include<stdio.h>#inclu...原创 2019-12-13 21:47:16 · 697 阅读 · 1 评论 -
C语言: 指针 -1
什么是指针?指针(pointer)是一个值为内存地址的变量(或数据对象)。想要透彻搞懂它,就必须从计算即底层原理进行解释。与指针紧密相连的就是内存:内存在物理上是由一组DRAM芯片组成,从功能讲,内存是一个数据仓库,程序在执行前要被载入到内存中才能被中央处理器(CPU)执行。作为程序员,我们无需了解内存的物理结构。操作系统将软件与硬件结合起来,给程序员提供了一种对物理内存空间的抽象...原创 2019-12-10 21:35:14 · 1282 阅读 · 1 评论 -
C语言: 字符串 -3
自定义字符串函数实现:头文件:/* 自定义字符串库头文件 MyString.h*/#include<stdio.h>#include<stdlib.h>#include<string.h>/* 字符串结构体 参数: P: 字符串首地址 参数 realLenght:字符串实际长度 ...原创 2019-12-08 13:41:00 · 312 阅读 · 0 评论 -
C语言: 字符串 -2
一 C 语言字符处理函数库ctype.h字符处理函数库(Character-handling library),包含几个用于字符数据测试和操作的函数。每个函数接受的实参都是一个用整型数或EOF表示的字符。在 C 语言中 字符通常被当作整型数来处理,因为C语言中的字符通常是一个字节的整数。一般而言, EOF的值为 -1,但是某些硬件体系结构不允许在char类型变量中存储负值,所以,字符处理函数...原创 2019-12-08 13:28:22 · 802 阅读 · 0 评论 -
C语言: 字符串 -1
字符串是一个或多个字符的序列。在 C 语言中没有专门用于存储字符串的变量类型,字符串被存储在 char 类型的数组中。数组由连续的存储单元组成,字符串中的字符被存储在相邻的存储单元中,每个单元存储一个字符。如下图:注意:数组末尾的字符 '\0' 是空字符( null character) ,在 C 语言中它标记字符串的结束。空字符不是 0 ,它是非打印字符,其 ASCII 码值是 (或等...原创 2019-12-02 22:00:53 · 5194 阅读 · 0 评论 -
C语言: 结构体,共用体,枚举体和 Typedef
一 结构体:结构体是一中构造数据类型 结构体的用途是把不同类型的数据组合成一个整体,相当于自定义数据类型1.1 结构体的定义:struct [结构体名称]{ 类型标识符 成员名称; 类型标识符 成员名称; 类型标识符 成员名称; ... ...}1.2 声明和使用:#define _CRT_SECURE_NO_WARNINGS#include<stdio...原创 2019-11-30 18:14:45 · 697 阅读 · 0 评论 -
C语言: 链表-1
链表的定义:链表是一种常见的重要的数据结构;它是动态地进行存储分配的一种结构。链表示意图:定义一个简单链表:/* File Name : linknode.h 定义链表结构体:UserInfo*//* 链表结构体: 声明:age (年龄) name (姓名) next (下一个节点地址)*/struct UserInfo{ //年龄 ...原创 2019-11-25 19:43:27 · 288 阅读 · 0 评论 -
C语言: 编译,预编译,宏定义与预处理
一 预处理:C语言是建立在适当的关键字,表达式,语句以及使用它的规则上。然而 ,C标准不仅描述C语言,还描述如何执行 C 预处理器,C标准库有那些函数,以及这些函数的工作原理。C 预处理器在程序执行之前检查程序(故称为预处理器),根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容。预处理器可以包含程序所需要的其他文件,可以选择让编译器查看那些代码。预处理器并不知道 C 。基本上...原创 2019-11-19 22:14:25 · 7015 阅读 · 0 评论 -
C 生存期,作用域和可见域
一 C语言中的变量存储类别:1 auto(自动)2 register(寄存器)3 static (静态)extern (外部)其中, auto 和 register 变量属于自动分配方式,而 static 和 extern 变量属于静态分配方式。不同的分配方式下,变量的生存期,作用域和可见域各不相同。二 作用域区分:变量可分为局部变量和全局变量。局部变量: 在函数内部定义...原创 2019-11-16 13:57:11 · 1303 阅读 · 0 评论 -
C语言: 头文件源文件及include包含指令
C语言 头文件源文件及include包含指令1- 头文件:(head),所以文件后缀是.h,head的简称。头文件是源文件的辅助文件,一般把一些变量,函数定义到头文件,而函数的实现放在源文件。头文件主要解决可以拆分大的源文件,实现在在主函数中共享其他源文件的变量或函数。比如把输入/输出函数原型放在 stdio.h 中,把数学函数原型放在 math.h 中。头文件可以将源文件的有效信息提取出来,...原创 2019-11-07 23:22:15 · 6762 阅读 · 0 评论 -
C语言 --位运算
总结一下,自己脑子短路时可以查看一下。一,位运算符:逻辑运算符:&:位 ‘与’ ;^: 位 ‘异或’|: 位 ‘或’~: 位 ‘非’,取反移位运算符:<<: 左移>>: 右移逻辑位运算都是以 (bit)为单位。二: ‘~’ 非 ,取反位取反的操作符为“~”,0变成1,1变成0,需要注意的是,位取反运算并不会改变操作数...原创 2019-06-07 11:34:19 · 20864 阅读 · 3 评论