c
哇风
欢迎大家一起来学习 c/c++ ,数据结构,嵌入式相关课程
交流qq群:499984459
展开
-
c语言中的预处理
显示有问题,有必要的话请转向原始链接一、C语言由源代码生成的各阶段如下:C源程序- > 编译预处理- > 编译- > 优化程序- > 汇编程序- > 链接程序- > 可执行文件 其中编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:...原创 2021-12-31 16:40:11 · 729 阅读 · 0 评论 -
九.const 和volatile 分析
const 只读变量const 修饰的变量是只读的,本质还是变量const 修饰的局部变量在栈上分配空间const 修饰的全局变量在全局数据区分配空间const 只在编译期,在运行期无用const 修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边在现代c语言编译器中,修改const 全局变量将导致程序崩溃注意:标准c语言编译器不会将const 修饰...原创 2020-02-22 18:51:57 · 114 阅读 · 0 评论 -
七.循环语句
循环语句的基本工作方式通过条件表达式判定是否执行循环体条件表达式遵循if语句表达式的原则do, while, for 的区别do语句 先执行后判断,循环体至少执行一次while语句先判断后执行,循环体可能不执行for语句先判断后执行,相比while更简洁do{// loop}while(condition);while(condition)...原创 2020-02-19 19:12:30 · 109 阅读 · 0 评论 -
六 分支语句
if语句分析if 语句用于根据条件选择执行语句else 不能独立存在且总是与它最近的if相匹配else 语句后可以接连其他if语句if(condition){// statement 1}else{// statement 2}if 语句中零值比较的注意点bool 型变量应该直接出现于条件中,不要进行比较变量和0值比较时,0值应该出现...原创 2020-02-19 18:45:35 · 146 阅读 · 0 评论 -
四.类型转换
类型之间的转换c 语言中的数据类型可以进行转换强制类型转换隐式类型转换int main(){ long}原创 2020-02-08 16:24:04 · 70 阅读 · 0 评论 -
二.有符号数与无符号数
计算机中的符号位1.数据类型的最高位用于标识数据的符号 最高位为1,表明这个数为负数最高位为0,表明这个数为正数2.在计算机内部用补码表示有符号数正数的补码为正数本身负数的补码为负数的绝对值各位取反后加13.在计算机内部用原码表示无符号数无符号数默认为正数无符号数没有符号位4.对于固定长度的无符号数MAX_VALUE + 1 -> MIN_VA...原创 2020-02-08 13:48:53 · 178 阅读 · 0 评论 -
一.C语言基础入门 ,类型变量
类型,变量1.数据类型的本质是一个模子2.数据类型代表需要占用的内存大小3.变量的本质是一段内存的别名4.变量隶属于某一种数据类型5.变量所在的内存大小取决其所属的数据类型...原创 2020-02-08 13:16:51 · 74 阅读 · 0 评论 -
27.数组的本质分析
数组的概念数组是相同类型的变量的有序集合数组的大小数组在一片连续的内存空间中存储元素数组元素的个数可以显示或隐式指定int a[5] = {1,2};int b[] = {1,2};问题:1.a[2],a[3],a[4]的值是多少?答: 02.b包含了多少个元素答:2个数组地址与数组名数组名代表数组首元素的地址数组的地址需要用取地址符&...原创 2019-11-16 20:49:31 · 104 阅读 · 0 评论 -
26.指针的本质分析
变量:程序中的变量只是一段存储空间的别名,*号的意义在指针声明时,*号表示所声明的变量为指针在指针使用时,*号表示取指针所指向的内存空间中的值*号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值小贴士变量p保存着变量i的内存地址,即p<-> &i*p<->i常量与指针const int * p // p可变,p...原创 2019-11-12 06:38:29 · 76 阅读 · 0 评论 -
25 #和##运算符
#运算符#运算符用于在预处理期将宏参数转换为字符串#的转换作用是在预处理期完成的,因此只在宏定义中有效编译器不知道#的转换作用用法# define STRING(x) #xprintf("%s\n",STRING(Hello World!));工程中#运算符的使用#define CALL(f,p) (printf("Call function %s\n",#f),...原创 2019-11-16 16:16:07 · 95 阅读 · 0 评论 -
24.#pragma pack
#pragma pack什么是内存对齐?不同类型的数据在内存中按照一定的规则排列而不一定是顺序的一个接一个的排列struct Test1{ char c1;short s;char c2;int i;};struct Test2{ char c1;char c2;short s;int i;};printf("sizeof...原创 2019-11-16 15:50:07 · 245 阅读 · 0 评论 -
23.#pragma使用分析
#pragma简介#pragma用于指示编译器完成一些特定的动作#pragma所定义的很多指示字是编译器特有的#pragma在不同的编译器间是不可移植的预处理器将忽略它不认识的#pragma指令不同的编译器可能以不同的方式解释同一条#pragma指令一般用法:#pragma parameter注:不同的parameter参数语法和意义各不相同message用于条...原创 2019-11-16 14:54:57 · 102 阅读 · 0 评论 -
22.条件编译使用分析
条件编译的意义:一份代码支持多种产品版本切换条件编译的本质条件编译时预编译指示命令用于控制是否编译某段代码#define c 1#if (c==1)printf("This is first printf ;;;\n");#elseprintf("this is second printf ...\n");#endif预编译器根据条件编译指令有选择的删除代...原创 2019-11-08 06:41:13 · 88 阅读 · 0 评论 -
21.宏定义的使用
C语言中的宏定义#define 是预处理器处理的单元实体之一#define定义的宏可以出现在程序的任意位置#define定义之后的代码都可以使用这个宏#define定义的宏常量可以直接使用#define定义的宏常量本质为字面量,不占用任何内存宏定义表达式#define表达式的使用类似函数调用#define表达式可以比函数更强大#define表达式比函数更容易出错...原创 2019-11-07 22:21:01 · 300 阅读 · 0 评论