C语言笔记一

时间:2023-03-09 04:30:36
C语言笔记一
学习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,数据段

}

养成良好的编程代码风格;