学习C语言已经有一段时间,然而发现越学不知道的东西越多,这是在印象笔记中记得一些东西,现在再回顾一遍顺便补充一些新东西。
一,基础知识
运算符号 优先级 单目>算术>关系
从高到低
{
括号()
成员 . 解引用 *
算数运算符 * / % + -
关系运算符 > > >= <= != ==
逻辑运算符 && ||(短路径法则:&&前为假,后不判断;||前为真,后不判断)
赋值运算符 =
}
注意:
c语言中,前置++/--,后置++/--都不能做左值
c++, 前置~~可以做左值,后置不能做左值
例子:
判断是否为闰年问题
(year%4 == 0 && year%100 != 0)||(year%4 == 0 && year%400 == 0 )
二,各种类型与零值比较
bool类型
bool flag=true;
if(flag){ }
else{}
float类型
if(float>=0.0000001&&float<=0.00001)
指针类型
if(p==NULL)
if(p!=NULL)
三,关于hello world程序
#include<stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
从main.cpp->编译器编译(语法检查)->.obj ->链接器链接(与库文件(.lib)链接)->.exe
详细过程:
开始 编辑
1,预处理 (-E)
(不做语法检查)
1,宏替换
2,“删除”注释语句(空格替换注释)
3,复制粘贴头文件(自定义类型,类型重定义,宏,函数声明)
4,条件编译指令,#if. #endif. #ifdef
5,其他
2,编译 (-S)
语法检查,将C语言生成汇编语言代码
源码—————>中间语言(编译器前段)
1,词法分析
2,语法分析
3,语义分析
中间语言———>目标文件(编译器后段)
1,代码生成
2,目标代码生成
3,汇编 .o
汇编语言-->根据当前平台(汇编器)-->机器指令
4,链接 .exe
将汇编后的机器指令和编译环境提供的库文件链接合并,生成可执行程序
四,内存分了很多区,主要包括
{
栈: 1,从高地址向低地址生长
2,分配效率高
3,无碎片问题
使用场景:数据量小(<=1024)
已知内存占用大小
访问非常频繁
堆: 1,从低地址向高地址生长
2,分配效率低
3,频繁申请/释放,容易造成内存碎片
使用场景:数据量大(>=1024)
处理问题所需空间大小不明确
访问频率相对较低
需要对变量生命周期进行手动管理
代码段
常量区 :1,静态常量区
2,全局变量区
3,数据段
}养成良好的编程代码风格;