自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 复习c语言深度剖析(29)—指针和数组分析(下)

问题:数组名可以当作指针常量使用,那么指针是否也可以当作数组来使用呢?通过下标的形式访问数组中的元素int main(){int a[5] = {0};a[1] = 3;a[2] = 5;return 0;}通过指针的形式访问数组中的元素int main(){int a[5] = {0};*(a + 1) = 3;*(a + 2) = 5;return 0;}...

2019-09-03 20:36:28 141

原创 复习c语言深度剖析(28)—指针和数组分析(上)

数组的本质数组是一段连续的内存空间; 数组的空间大小为sizeof(array_type)*array_size; 数组名可看做指向数组第一个元素的指针常量。问题:a + 1的意义是什么?结果是什么? 指针运算的意义是什么?结果是什么?#include<stdio.h>int main(){int a[5] = {1, 2};in...

2019-09-03 20:35:53 121

原创 复习c语言深度剖析(27)—数组的本质分析

1.数组的基本概念数组是相同类型的变量的有序集合数组当中的元素没有名字,我们只能通过数组名和下标来访问数组中的元素。数组名a代表的是这5个存储空间的集合。代表的是这一段内存。数组在—片连续的内存空间中存储元素,数组元素的个数可以显示或隐式指定 #include <stdio.h>int main(){int a[5] = { 1, 2 }; // 显示指定...

2019-09-03 20:35:15 154

原创 复习c语言深度剖析(26)—指针的本质分析

程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间?问题:程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间?问题:是不是只能通过变量使用存储空间?#include<stdio.h>int main(){int i = 5;int *p = &i;printf(“i = %d, p = %p\n”,...

2019-09-03 20:34:37 104

原创 复习c语言深度剖析(25)—#和##操作符使用分析

1.#运算符#运算符用于在预处理期将宏参数转换为字符串 #的转换作用是在预处理期完成的,因此只在宏定义中有效 编译器不知道#的转换作用 用法 :#define STRING(x)  #x  printf("%s\n", STRING(Hello World!)); #运算符的基本用法 #in...

2019-09-03 20:33:51 125

原创 复习c语言深度剖析(24)—#pragma使用分析、内存对齐

1.#pragma简介#pragma用于指示编译器完成一些特定的动作 #pragma所定义的很多指示字是编译器特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指令 不同的编译器可能以不同的方式解释同—条#pragma指令 一般用法: #pragma parameter,注:不同的par...

2019-09-03 20:33:03 125

原创 复习c语言深度剖析(23)—error和#line使用分析

1.#error的用法#error用于生成一个编译错误消息用法:#error message,其中message不需要用双引号包围#error编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning用于生成编译警告#error是一种预编译器指示字#error可用于提示编译条件是否满足编译过程中的任意错误信息意味着无法生成最终的可执行程序。2.编程实验#error预处理...

2019-09-03 20:31:59 138

原创 复习c语言深度剖析(22)—条件编译使用分析

1.基本概念条件编译的行为类似于C语言中的if…else…; 条件编译是预编译指示命令,用于控制是否编译某段代码; 可以利用预处理器调整代码、删除代码的操作。2.编程实验条件编译初探 //#include<stdio.h>#define C 1int main(){const char* s;#if(1 == C)s = “this...

2019-09-03 20:31:10 117

原创 复习c语言深度剖析(21)—宏定义的使用与分析

0.对于宏的第一印象:可以定义一个常量,如:#define PI 3.14159可以定义一个代码块,将宏作为函数使用,如:include <stdio.h>// 此处将交换两个变量的函数用宏来定义#define SWAP(a, b) { int temp = a; a = b; ...

2019-09-03 20:29:38 206

原创 复习c语言深度剖析(20)—链接过程简介

1. 链接器的意义每个C语言源文件被编译后生成目标文件,这些目标文件最终要被链接在一起生成可执行文件链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接2. 静态链接由链接器在链接时将库的内容直接加入到可执行程序中Linux下静态库的创建和使用 编译静态库源码: gcc -c lib.c -o lib.o 生成静...

2019-09-02 13:22:03 120

原创 复习c语言深度剖析(18)—三目运算符和逗号表达式

1. 三目运算符三目运算符(a?b:c)可以作为逻辑运算的载体规则:当a的值为真时,返回变量b的值(而不是变量本身);否则返回c的值。(c++中返回变量本身)三目运算符(a?b:c)的返回类型通过隐式类型转换规则返回b或c中较高的类型当b和c不能隐式转换到同一类型时将编译出错2.编程实验三目运算符初探#include <stdio.h>#include &l...

2019-09-02 13:20:41 195

原创 复习c语言深度剖析(17)—++和--操作符分析

++和—操作符对应的两条汇编指令前置++或–:变量自增(减)1,然后取变量值后置++或–:取变量值,然后变量自增(减)12.++, – 操作符使用分析一对令人头疼的兄弟 nt i = 0;     (i++) + (i++) + (i++);...

2019-09-02 13:20:02 117

原创 复习c语言深度剖析(16)—位运算符分析

1.C语言中的位运算符位运算符直接对bit位进行操作,其效率最高2. 左移和右移注意点左操作数必须为整型类型:char和short被隐式转换为int后进行移位操作右操作数的范围必须为:[0,31],其他值属未定义行为,不同编译器处理不同。左移运算符 << 将运算数的二进制位左移:规则为高位丢弃,低位补0右移运算符 >> 把运算数的二...

2019-09-02 13:19:17 218

原创 复习c语言深度剖析(15)—逻辑运算符分析

1. 有趣问题逻辑运算符&&,||和!真的很简单吗?#include <stdio.h>int main(){int i = 0;int j = 0;int k = 0;// 等价于(true && ++i) ||(++j && ++k)可见整个表达式为或运算,从左向右进行// 或运算,先计算或左边的(true...

2019-09-02 13:18:36 239

原创 复习c语言深度剖析(14)—单引号和双引号

1. 单引号和双引号C语言中单引号用来表示字符字面量(是个数值)C语言中双引号用来表示字符串字面量(是个指针)‘a’表示字符字面量(97),在内存中占用1个字节,‘a’+1表示’a’的ASCII码加1,即’b’“a"表示字符串字面量(是个指针),在内存中占2个字了,“a”+1表示指针运算,指向"a"的结束符”\0"下面的程序片段合法吗?char *pl = 1; ...

2019-09-02 13:17:55 284

原创 复习c语言深度剖析(13)—接续符和转义符

1. 接续符的意义C语言中的接续符(\)是指示编译器行为的利器// 使用接续符的例子#include <stdio.h>int main(){printf(“Hello World!\n”);return 0;}// 剔除接续符后的原码#include <stdio.h>int main(){printf(“Hel...

2019-09-02 13:17:19 168

原创 复习c语言深度剖析(12)—注释符号

1. 似是而非的问题下面的注释是正确的吗?#include<stdio.h>int main(){int/**/i; //合法int i;char* s = "abcdefg //ijklmn"; //合法引号内的双斜杠//Is it a \ valid comment? ...

2019-09-02 13:16:25 174

原创 复习c语言深度剖析(11)—enum、sizeof、typedef 分析

enum枚举类型1.1 使用方法enum是C语言中的一种自定义类型enum值是可以根据需要自定义的的整型值第一个定义的enum值默认为0默认情况下的enum值是在前一个定义值的基础上加1enum类型的变量只能取定义时的离散值enum Color{GREEN, // GREEN0;RED= 2, // 自定义RED2;BLUE /...

2019-09-02 13:14:44 244

原创 复习c语言深度剖析(10)—struct和union分析

1.struct的小秘密C语言中的struct可以看作变量的集合struct的问题:空结构体占用多大内存?#include <stdio.h>struct TS{};int main(){struct TS t1;struct TS t2;// VC、BCC下定义空结构体编译器直接报错,gcc下空结构体大小为0printf("sizeof(struct TS) ...

2019-09-01 09:04:34 126

原创 复习c语言深度剖析(9)—const和volatile分析

const只读变量——(注意不是真正常量,只是告诉编译器不能出现在赋值号左边!)const修饰的变量是只读的,本质还是变量const修饰的局部变量在栈上分配空间const修饰的全局变量在全局数据区分配空间(vc、gcc会将其放入常量区,bcc放入全局数据区)const只在编译期有用(只能出现在赋值符号左边),在运行期无用#include <stdio.h>const i...

2019-09-01 09:03:45 114

原创 复习c语言深度剖析(8)—循环语句goto和void分析

1.遭人遗弃的goto高手潜规则:禁用goto项目经验:程序质量与goto的出现次数成反比最后的判决:将goto打入冷宫2.编程实验goto副作用分析 #include <stdio.h>#include <stdlib.h>#include <malloc.h>void func(int n){int *p = NULL;if...

2019-09-01 09:02:05 111

原创 复习c语言深度剖析(7)—循环语句

1. 循环语句分析循环语句的基本工作方式①通过条件表达式判定是否执行循环体②条件表达式遵循if语句表达式的原则do、while、for的区别①do语句先执行后判断,循环体至少执行一次②while语句先判断后执行,循环体可能不被执行③for语句先判断后执行,相比while更简洁2. 循环的回顾do…while语句的循环方式while语句的循环方式for语句的...

2019-09-01 09:01:12 137

原创 复习c语言深度剖析(6)—分之语句

if语句if语句用于根据条件选择执行语句else不能独立存在且总是与它之前最近的if相匹配else语句后可以接连其他if语句if语句中零值比较的注意点①bool型变量直接出现于条件中,不要进行比较②变量和0值比较时,0值应该出现在比较符号左边③float型变量不能直接进行0值比较,需要定义精度2.switch语句分析switch语句对应单个条件多个分值的情形case语句分支...

2019-09-01 09:00:17 70

原创 复习c语言深度剖析(5)—变量属性auto、register、static、extern

1.C语言的变量属性C语言中的变量可以有自己的属性在定义变量的时候可以加上“属性”关键字“属性”关键字指明变量的特有意义。语法:property type var_name;如:auto char i;register int j;static long k;extern double m;2. auto关键字auto即C语言中局部变量的默认属性auto表明...

2019-09-01 08:59:13 183

原创 复习c语言深度剖析(4)—类型转换

C语言中的类型之间的转换:强制类型转换和隐式类型的转换#include<stdio.h>int main(){long l = 800;int i = (int)l; // 强制类型转换short s = 800;int k = s; // 隐式类型转换,no error,no warningreturn 0;}2. 强制类型转换强制类型转换的语...

2019-09-01 08:57:55 77

原创 复习c语言深度剖析(3)—浮点数的秘密

1. 内存中的浮点数——存储方式:符号位、指数、尾数的符号float与double类型的数据在计算机内部的表示法是相同的,但由于所占存储空间不同,分别能够表示的数据值范围和精度不同。解释:对于5.14 *10^11 :  14为尾数,11为指数,10为基2. 浮点数的存储示例2.1 浮点数的转换步骤将浮点数转换成二进制用科学计数法表示二进制浮点数...

2019-09-01 08:56:58 107

原创 复习c语言深度剖析(2)—有符号与无符号

数据类型1.1 计算机中的符号位有符号编码规则:数据的最高位用于标识数据的符号最高位为1,表示这个数为负数最高位为0,表示这个数为正数无符号编码规则:数据的最高位不代表符号位计算机不知道数据的正负,看人怎么看待1.2 编程实验有符号数的符号位#include <stdio.h>int main(){char c = -5;short s = 6;int ...

2019-09-01 08:55:23 388

原创 复习1

#include using namespace std;class BaseA{int ma;public:BaseA(int a){ma = a;}int getA(){ return ma;}};class BaseB{int mb;public:BaseB(int b){mb = b;}int getB(){ return mb;}...

2019-08-01 21:12:17 93

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除