C语言
文章平均质量分 69
__Christopher
c++无所不能
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++ 高并发服务器详解
本文列举两个c++并发服务器,并尝试分析其中语法,若有错误,还望指正。这里不讨论socket和c/s架构,只对服务器端做分析。服务器处理任务的大体流程是: 服务器启动线程,开始等待和接收任务,处理任务,退出线程。接收任务时,任务被添加在全局的一个队列,被所有线程共享,这时就考虑一个同步。如果任务队列为空或者太满,还需要考虑线程池的容量大小。这不禁让人想起了经典的生产者—消费着模式,生产者生产一个任务,消费者耗费一个任务,很类似,大概流程如下草图所示:这里用到了互斥量锁,条件变量,..原创 2021-11-09 10:27:02 · 3928 阅读 · 0 评论 -
.dll的制作和显示调用
虽然windows下的动态链接库有不止一种调用方式,但是既然叫做动态链接库,还是毕竟喜欢随用随调。dll的生成:1 VS下创建项目 Win32控制台应用程序2 添加对应的.h .cpp文件3 .cpp里包含头文件,.h文件里的函数声明前面加上 extern "C" __declspec(dllexport)extern "C" __declspec(dllexport) double Add(double a, double b);像写正常的c函数一样,区别就是这是生成.dll.原创 2021-02-19 22:18:08 · 288 阅读 · 0 评论 -
C语言输入缓冲区实例详解:如何从键盘读取指定的字符串长度
昨天接触了一下用户登录,发现从键盘读取数据到缓冲区,再保存到程序变量这个过程,还是需要格外注意,因为一不小心,就容易读取错误。下面用getchar函数说明一下:getchar()函数函数原型:int getchar(void)函数功能:从标准输入 stdin 获取一个字符函数返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符使用场景: 用户登录时,输入用户名和密码,程序将数据保存到变量,用来进行显示,验证等其他操作下面是用户结构体://用户结构体,...原创 2021-02-08 16:15:01 · 1276 阅读 · 0 评论 -
C12节:练习和作业
1 贪吃蛇练习/* 贪吃蛇练习*/#include <stdio.h>#include <stdlib.h>#include <time.h>#define SIZE 4enum {UP, DOWN, LEFT, RIGHT};typedef struct { int x; int y;} position;void show_snake(position *p_position, int s原创 2021-02-01 17:59:11 · 158 阅读 · 2 评论 -
C11节:动态分配内存,二级指针,sizeof
指针是用来存储地址数据的变量NULL表示空地址记录无效地址的指针变量叫做野指针指针可以参与如下数学计算指针 + 整数,指针 - 整数,指针 - 指针以上计算中所有整数都是有单位的,单位由指针的类型决定静态局部变量的地址可以作为函数的返回值来使用数组做函数形参时计算机内部使用指针替代它对数组使用sizeof关键字计算的结果是整个数组的大小对指针使用sizeof关键字计算的结果是指针变量本身的大小数组名称取地址后得到的结果地址不变,但是级别和二维数组名称一致指针变量本身的地址和它原创 2021-02-01 17:53:41 · 569 阅读 · 0 评论 -
C10节:预处理,宏定义,结构体,条件编译,联合与枚举
预处理指令是C语言支持的一种特殊的指令预处理指令都以#做开头,不以;做结尾预处理指令在编译的第一个阶段被处理预处理指令的作用是修改程序源代码gcc命令可以使用-E选项单独处理所有预处理指令#define是一个预处理指令这个预处理指令用于实现宏定义 宏定义可以给数字起个名字 定义宏的时候不要使用=(赋值操作符)宏名称中不应该有空格宏和变量完全不同/* 宏定义练习*/#include <stdio.h>#define PI ...原创 2021-02-01 17:40:49 · 357 阅读 · 0 评论 -
C9节:const关键字,字符串
指针变量可以用作循环变量处理数组中的每个普通变量const关键字可以用来声明变量const变量是不可以赋值的(仅对变量名有效)声明指针变量时也可以使用const关键字,const int *p_num;以上声明的指针不可以用来修改普通变量(包括指针中地址对应的普通变量和计算出的地址对应的普通变量)int * const p_num;以上声明的指针变量是不可以被赋值的const int * const p_num;以上声明的指针变量本身不可以被赋值,它对应的普通变量也不可以被赋值原创 2021-02-01 17:24:47 · 192 阅读 · 0 评论 -
C8节:作用域,生命周期,指针
变量的作用域是变量名可以被使用的所有代码范围全局变量的作用域是所有语句,它们被声明在所有函数外边没有初始化的全局变量自动被初始化成0局部变量的作用域是它所属的函数内部所有语句。块变量是声明在语句块中的变量,它们的作用域是语句块内的所有语句/* 作用域练习*/#include <stdio.h>int num; //全局变量void func() { int num1 = 0; //局部变量 printf("num1是%d\n",...原创 2021-02-01 17:16:12 · 483 阅读 · 0 评论 -
C7节:文件操作,递归与递推
文件操作相关库函数1.fopen函数用于打开文件2.fclose函数用于关闭文件3.fread/fwrite函数用于以二进制方式读写文件/* 文件操作练习*/#include <stdio.h>int main() { FILE *p_file = fopen("a.bin", "w"); if (p_file) { //.... fclose(p_file); p_file = NULL; }原创 2021-02-01 17:08:42 · 172 阅读 · 0 评论 -
C6节:函数
函数由一组语句构成。所有C语言程序都是由一个或者多个函数构成的每个C语言程序都必须有叫做main的主函数,程序从这个函数的第一条语句开始执行。两个函数交流过程中主动发起方叫做调用函数,另一方叫做被调用函数。返回值变量用来从被调用函数传递数据到调用函数返回值变量类型声明在函数名前面。如果没有返回值变量则类型声明成void.return关键字可以把一个数字赋值给返回值变量参数是一组特殊变量,用来从调用函数函数传递数据到被调用函数。参数的个数没有限制参数的传递效果类似于复印机,传递结束后会有两份原创 2021-02-01 17:00:03 · 209 阅读 · 0 评论 -
C5节:数组,随机数
数组可以使用多种方法进行初始化数组名称只能当数字使用,永远不能对数组名称赋值数组名称代表数组中第一个变量的地址数组名称加下标可以获得下标对应变量的地址如果有数组arr则*(arr + n)表示下标为n的变量对数组名称做sizeof计算可以得到整个数组的大小C99规范中支持变长数组变长数组不支持初始化语法/* 数组练习*/#include <stdio.h>int main() { int num[5], pos = 0; //数组声明语句原创 2021-02-01 16:50:28 · 222 阅读 · 0 评论 -
C4节:类型转换,分支、循环语句,缓冲区
隐式类型转换把一个表达式中的所有数据调整成同样的类型。把占地小的变量调整成占地大的变量int和float一起计算时int会被转换成float数有符号和无符号数据一起计算时把有符号数据转换成无符号数据强制类型转换可以把任何数据或变量当成某个类型来使用/* 类型转换练习*/#include <stdio.h>int main() { char ch = -10; printf("-10 + 3 > 0是%d\n", -10 + 3 > 0);原创 2021-02-01 16:38:11 · 222 阅读 · 0 评论 -
C3节:位操作符,逻辑操作符,三目运算符
负数二进制计算方法 整数二进制先做按位求反然后再加1.62 = 32 + 16 + 8 + 4 + 2 = 0011 1110-62 = 1100 0001 + 1 = 1100 0010已知某个二进制数字,也可以采用上述方法计算出相反数的二进制。某个数据类型中最小的负数的二进制形式是一个1右边全是0,例如char类型的最小负数二进制是1000 0000一个有符号类型变量中最左边的二进制位称为符号位,如果是负数则符号位一定是1.变量中首个二进制位为1不...原创 2021-02-01 16:28:16 · 353 阅读 · 0 评论 -
C2节:C语言变量,printf/scanf函数,数据类型
变量变量是唯一用来存储数据的工具不同的变量应该使用不同的名称命名一个变量只能用来存储某种特定类型的数据变量必须先声明然后再使用变量声明语句格式如下int num;其中num是变量名,int表示变量类型,整数类型赋值操作符(=)用于对变量进行赋值操作。要求左边是一个变量,右边是一个可以当成数字使用的内容。赋值语句中的数字如果和变量的类型不一致,则计算机会自动调整类型。在程序中变量可以当成数字使用变量名在程序中的作用由环境决定同类型的多个变量可以在一条变量声明语句中声明...原创 2021-01-26 18:19:21 · 491 阅读 · 0 评论 -
C1节:C语言简介及基础语法
简介编程语言从最高的打孔机器语言,到汇编语言,再到自然语言,经历了半个多世纪,而众多自然语言(也叫高级编程语言)中,唯独C语言能历经50年而经久不衰,笑看其他语言起起伏伏。这是为什么呢?下面我们从最基础的语法开始谈一谈C语言。以Linux环境为例。//hello.c#include <stdio.h>int main(){ printf("Hello world\n"); return 0;}任何语言,都需要翻译成计算机可以理解的机器语言,这个过程对于C语言叫原创 2021-01-25 18:54:27 · 738 阅读 · 0 评论
分享