C语言11 结构体

思考: 当需要一个容器能够存储1个字节,你会怎么做? //char 当需要一个容器能够存储4个字节,你会怎么做? //int 当需要一个容器能够存储100个2个字节的数据,你会怎么做? //short arr[100] 当需要一个容器能够存储5个数据,这5个数据中有1字节的,2字节的有10字节的。。。你会怎么做?? ===== 结构体 我需要这样的一个……

Continue reading

C语言10 多维数组

多维数组的定义 比如一个班有5个组,每个组有9个人 int arr[45] 或者 intarr[5*9] 或者 int arr[5][9] 比如一个县有5个学校,每个学校有3个年级,每个年级有4个班,每个班有5个组,每个组有9个人 int arr[53459] 或者int arr[5][3][4][5][9] int arr[5][3][4][5][9] ,又成为多维数组. 多维数组的初始化 int arr[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,7,6,5} }; 多维数组的存储方式 int arr[3][4]; 反汇编对比 8: int arr[3*4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 00401028 C7 45 D0 01 00……

Continue reading

C语言9 数组

数组的定义 数组定义的格式: 数据类型 变量名[常亮]; //为什么不能使变量? //因为在声明的时候 编译器需要知道数组的长度,分配相应大小的内存 数组的初始化 方式1: int arr[10] = {0,0,0,0,0,0,0,0,0,0}; 方式2: int arr[] = {1,2,3,4,5,6,7,8,9,10}; 对应汇编 #include "stdafx.h" int main(int argc, char* argv[]) { int age[10] = {1,2,3,4,5,6,7,8,9,10}; return 0; } 8: int age[10] = {1,2,3,4,5,6,7,8,9,10}; 00401028 C7 45 D8 01 00 00 00 mov dword ptr [ebp-28h],1 0040102F C7 45 DC 02 00 00 00 mov dword ptr [ebp-24h],2 00401036 C7……

Continue reading

C语言8 循环语句

如何实现让某些语句按照一定的条件重复执行呢? 比如:打印从0 – N的值? 例子: goto语句 #include #include void MyPrint(int x) { int i = 0; B: printf("%d\n",i); i++;……

Continue reading

Ubuntu安装最新版nginx

众所周知,Ubuntu 上官方源的更新速度一直是慢得令人发指的,很多人不得不自己编译 nginx,非常麻烦。 所以。我们直接用nginx官方源来安装。 增加源地址: sudo vim /etc/apt/sources.list 增加nginx官方源地址: deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx 导入key cd wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key 卸载旧版本 sudo apt remove nginx nginx-common nginx-full nginx-core 安装官方最新版 sudo apt update sudo apt install nginx……

Continue reading

C语言7 switch语句为什么高效

switch语句的定义 语法 switch(表达式) { case 常亮表达式1: 语句; break; case 常亮表达式: 语句; break; case 常亮表达式: 语句; break; ...... default: 语句; break; } 需要注意的点 表达式结束不能使浮点数 case后的值不能一样 case后的值必须是常量 break: break非常重要,当执行到一个分支后 如果没有break就会继续向……

Continue reading

C语言6 运算符和表达式

运算符与表达式 什么是运算符?什么是表达式? int x,y; x+y x-y x>y x==y x=y 表达式的结果 (x+y)*(x-y) char => short => int => float => double /*如果x和 y类型 不同,最终结果按照上面结果类型转换*/ 表达式不论怎么复杂。最终只有一个结果 不同类型运算结果类型证明的例子: void main() { char x =1; short y = 2; int z = x + y; return } 对应汇编片段: mov byte ptr [ebp-4],1 mov word ptr [ebp-8],offset main+20h(00401030)……

Continue reading

C语言常用函数

sqrt 求给定值的平方根 sqrt() 用来求给定值的平方根,其原型为: double sqrt(double x); 【参数】x 为要计算平方根的值。 如果 x < 0,将会导致 domain error 错误,并把全局变量 errno 的值为设置为 EDOM。 【返回值】返回 x 平方根。 Exp: #include main(){ double root; root = sqrt(200); printf("answer is %f\n", root); } pow 求x的y次方(次幂) pow() 函数用来求 x 的 y 次幂(次方),其原型为: double pow(double x, double y); p……

Continue reading

C语言4 -C语言整数和浮点数

C语言数据类型 基本类型 整数类型 char、short、int、long char 8BIT 1字节 0~0xFF short 16BIT 2字节 0~0xFFFF int 32BIT 4字节 0~0xFFFFFFFF long 32BIT 4字节 0~0xFFFFFFFF 特别说明: int 在16位计算机中与short宽度一样,在32位以上的计算机中与long相同 存储格式 char x = 1; //0000 0001 0x01 char x = -1; //1111 1111 0xFF (反码、补码、源码规则存储) 数据溢出 char x =……

Continue reading

C语言5 -字符和字符串

int x = 123; //补码 int float f = 123.4F; //IEEE编码 int i = "A"; //神马情况??? 我们在代码中写入 int i = "A"; 反编译后汇编就编程了 mov dword ptr ss:[esp-4],0x41 为什么会变成41呢? 字符类型 ASCII 表 (American Standard Code for Information Interchange 美国标准信息交换代码) 维基百科: https://zh.wikipedia.org/wiki/ASCII 字符类型 ASCII表最大 127 16进制 是 0x7F 也就是只需要一个字节 一个字节就够了,所以通常……

Continue reading