C语言基础知识

目录

计算机语言

C语言

计算机语言发展

写C语言代码

数据结构

C语言数据类型

计算机中的单位

编码和字符集

前言

字符集分类

GB2312两个字节与1个字节区分方式

关于Unicode

UTF标准

十进制数的表示

压缩BCD码

非压缩BCD码

ASCII码表

变量与常量

前言

定义变量的方法

变量的命名

变量的分类

变量的作用域以及生命周期

关于常量

常量的分类

转义字符

C语言的注释

注释分类

关键字

关键字汇总

关键字的理解 

计算机语言

计算机语言:人和计算机交流的语言。

C语言

C语言是一门通用的计算机编程语言,广泛用于底层软件开发。

C语言是一门有国际标准的语言

计算机语言发展

  1. 二进制语言:0/1这样的序列语言
  2. 汇编语言:将具有特定功能的0/1序列进行封装,用助记符代替。
  3. B语言
  4. C语言

写C语言代码

写代码的工具——编译器

怎么写呢?

  1. 创建一个项目
  2. 创建一个源文件
  3. 写代码
  4. 编译代码

写主函数(main函数)——C语言是从主函数第一行开始执行的,所以C语言代码中得有主函数,并且只能有一个,不然报错。

数据结构

定义:计算机语言-解决生活中的问题那么他必须有能力描述生活中的问题——数据结构

C语言数据类型

  • char:字符数据类型——1字节
  • short:短整型——2字节
  • int:整形——4字节
  • long:长整型——4字节
  • long long:更长的整形——8字节
  • float:单精度浮点数——4字节
  • double:双精度浮点数——8字节

计算机中的单位

  • bit——比特位
  • byte——字节=8bit
  • kb——1024byte
  • mb——1024kb
  • gb——1024mb
  • tb——1024gb
  • pb——1024tb
  • eb——1024pb

编码和字符集

前言

计算机只认识0/1,其在底层就被识别为高电平和低电平;0/1在计算机底层存储就是按位来存储的,一个位里有2种状态即0/1,由于我们需要表示很多状态,所以计算机定义=>8位为1字节,1字节里面的状态为2^8(256)个可能性;在这里,每种状态可能就对应一个字符。 

编码:信息从一种形式转换成另一种形式的过程

字符集:由权威机构形成的编码表 

字符集分类

  • ASCII码:英文字符集,用一个字节7位表示
  • ISO8859-1:西欧字符集,用一个字节8位表示
  • GB2312:简体中文字符集,最多用两个字节编码
  • GBK:GB2312的升级,加入了繁体字,最多用2个字节编码 
  • Unicode:国际通用字符集,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码,用两个字节编码

GB2312两个字节与1个字节区分方式

留出头一位为首位,首位如果为1表示一个字节不够,要加上后面一字节才能完整表示一个字符,首位如果为0,那么表示1字节就为一个字符

关于Unicode

因为unicode用2个字节编码,共可以表示字符2^16(65536)表示世界所有符号是够的,但是,怎么确定多少个字节代表一个字符呢,如果腾出一位代表首位那么2^15不够表示世界所有字符

UTF标准

三种编码方案:UTF-8、UTF-16、UTF-32

以UTF-8为例实现Unicode

将特定字符编码转换为16进制看所处在下面的范围,如果范围在下面的某一行就会采取该行的存储方式(采用几字节的存储方式),然后将该字符的二进制数按照顺序填入下面的x

十进制数的表示

十进制编码又称BCD码,分压缩BCD码和非压缩BCD码。

压缩BCD码

压缩BCD码又称8421码,他是用4位二进制编码来表示一位十进制的符号。

例如:

  • 十进制数124的压缩BCD码为:0001 0010 0100
  • 十进制数4.56的压缩BCD码为:0100.0101 0110

非压缩BCD码

非压缩BCD码是用8位二进制来表示一位10进制符号,其中低四位二进制编码与压缩BCD码相同,高四位任取。

例如:

  • 十进制数124的非压缩BCD码为:0011 0001 0011 0010 0011 0100

ASCII码表

前言:ASCII码又称美国信息交换标准代码,其是在计算机中用数字表示字符符号的一种行式。

变量与常量

前言

常量:不能改变的量。

变量:能被改变的量。

类型格式
%d整形
%u无符号整形
%p打印地址
%f单精度浮点型
%s字符串
%lf双精度浮点型
%c字符型

定义变量的方法

//数据类型 变量名=值;
int a=5;

作用:给一段指定的内存空间起名,方便我们来操作这块内存 

变量的命名

  • 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • 变量名中区分大小写的。
  • 变量名不能使用关键字。

变量的分类

  • 局部变量:在大括号内部定义的变量
  • 全局变量:在大括号外面定义的变量

当局部变量与全局变量名字冲突的情况下——局部优先 

变量的作用域以及生命周期

程序设计概念,通常来说,一段程序代码中所用到的名字并不是总是有效的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

局部变量的作用域:变量所在的局部范围

全局变量的作用域:整个工程

全局变量写在方法的最前面并且全局变量定义的名称只能定义一次(范围:在一个源文件中)

变量的生命周期:变量生命周期指的是变量的创建到变量的销毁之间的一个时间段。

局部变量的生命周期:进入局部范围生命周期开始,出局部范围生命周期结束。

全局变量的生命周期:程序的生命周期

关于常量

含义:不变的量

作用:用于记录程序中不可更改的数据

常量的分类

  • 字面常量——(eg:‘a'、36……)
  • const修饰的常变量(具有常属性的变量)——(eg:const int a=8;)
  • #define定义的标识符常量(可以放在任何位置)——(eg:#define MAX 10000)MAX值不可以更改
  • 枚举常量——(可以一一列举的常量)

转义字符

转变了字符本来的意思常用方法,在字符前加\

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符''\'092
\'代表一个单引号(撇号)字符039
\"代表一个双引号字符034
\0空字符(NULL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh1到2位十六进制所代表的任意字符二位十六进制

C语言的注释

  • 代码中有不需要的代码可以删除掉也可以注释掉
  • 代码中有些代码比较难懂,可以加一些注释文字 

注释分类

1.单行注释(注释一整行)——(//写的代码)

2.多行注释(注释多行)——(/*写的代码*/)

多行注释不支持嵌套注释:遇到第一个注释开头作为注释开头,遇到第一个注释结尾作为注释结尾。

关键字

关键字汇总

  • C语言提供的,不能自己创建关键字
  • 变量名不能是关键字

关键字的理解 

auto:是自动的,每个局部变量都是auto修饰的

原因:局部变量都是有作用域的,每个局部变量在作用域内被创建,出了作用域自动销毁,所以每个局部变量前面默认加一个auto

break:用于循环语句的跳出循环

case:用于switch语句的分支选择

char:字符类型修饰符

const:将变量加上const后,此变量便具有常属性,不可以再被更改,其本质还是一个变量

continue:用于循环语句结束当前循环,跳到下一次循环

default:switch语句里的默认选项

do:do……while循环所用

double:双精度浮点型

else:if……else里的选择

enum:枚举类型

extern:用来声明外部符号(声明时不需要指定它的值,指定他的类型即可)

//假设在一个源文件中有一个函数,我在另一个源文件中想使用它,那么我可以在要使用的源文件中进行函数声明
extern ADD(int, int);
也可以写成
extern ADD(int a, int b);
//在一个源文件中有2个.c文件,其中一个声明了int类型变量a并为其赋了值那么在另一个.c文件中要想使用,应提前声明一下extern int a;(前提:a是整个工程的全局变量)

注意:变量声明为外部变量,那么前面必须加extern,数组和函数可以不加(若不加则默认会有extern关键字) 

float:单精度浮点型

for:for循环的使用

goto:goto语句时使用

if:选择语句时使用

int:整形

long:长整型

register:寄存器关键字(用此关键字修饰的属性建议放到寄存器中)

cpu取数据一般都去寄存器里面拿,因为内存速度太慢了

short:短整型

return:返回关键字

signed:有符号的

unsigned:无符号的

sizeof:计算类型的大小

static:静态的

  • static修饰局部变量,改变了局部变量的生命周期(本质上改变了变量的存储类型)一般来说局部变量在函数结束之后就销毁了,但是用static修饰后变量的生命周器与文件同步,而且这个静态局部变量只能由本函数引用。
  • static修饰全局变量,使得这个全局变量只能在自己所在的源文件内部可以使用,其他源文件中不能使用。(全局变量在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了。)
  • static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用,本质上使函数的外部链接属性变成了内部链接属性

struct:结构体

switch:switch分支语句

typedef:类型重定义

//将unsigned int 用u_int修饰符表示,可以在方法里面(需要使用前定义),方法外面定义
typedef unsigned int u_int;

union:联合体(共用体)

void:空类型(无具体类型)

volatile:线程可见性,禁止指令重排序

while:while循环

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JMeter中进行多用户并发测试可以通过配置线程组来实现。线程组是定义并发用户的地方,你可以设置线程数、线程启动延迟、循环次数等参数以模拟多个用户同时访问系统。 以下是进行多用户并发测试的步骤: 1. 创建测试计划:在JMeter中,你需要创建一个测试计划。右键点击测试计划 -> 添加 -> Threads(Users)-> 线程组。 2. 配置线程组参数:选中线程组,右键点击 -> 添加 -> Config Element -> HTTP Cookie Manager(如果需要管理Cookie)和HTTP Cache Manager(如果需要模拟缓存)。 3. 添加Sampler:选中线程组,右键点击 -> 添加 -> Sampler -> HTTP Request(用于发送HTTP请求)或其他类型的Sampler。 4. 设置Sampler参数:在Sampler中,你可以设置请求的URL、请求方法、参数、头部信息等。 5. 添加断言:选中Sampler,右键点击 -> 添加 -> Assertions -> Response Assertion(用于验证响应内容)或其他类型的断言。 6. 添加监听器:选中线程组,右键点击 -> 添加 -> Listener -> 聚合报告或其他类型的监听器。监听器用于收集和展示测试结果。 7. 配置并发用户数:选中线程组,设置“Number of Threads(users)”参数为你想要模拟的并发用户数。 8. 配置循环次数:选中线程组,设置“Loop Count”参数为每个用户执行请求的次数。 9. 运行测试:点击工具栏上的运行按钮(绿色三角形按钮)来开始运行测试。你可以在监听器中查看测试结果。 10. 分析结果:根据监听器中的结果,你可以分析系统的性能情况,如响应时间、吞吐量等。根据结果进行优化和调整。 通过配置合适的线程组参数和Sampler,你可以实现多用户并发测试。记得根据被测试系统的实际情况和性能需求来设置合理的并发用户数和循环次数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值