Mike 发表于 2021-7-11 10:56:19

C_关键字_1

  c90和C89版本关键字为32个,c99之后增加了5个,为37个关键字,但目前不是所有编译器支持c99,所以现在学习大部分认为关键字有32个;
   
  vs2013不停屏;
  vs2013停屏:
  #include <windows.h>   //系统头文件,仅仅是为了停屏。
  ...
  system(“pause“);
  编译代码时,是将文本代码 --> 可执行程序(二进制文件) --> 双击可执行该文件(存在于debug中的.exe文件);
  最终编译器会生成可执行程序并运行;
  在win中,双击的本质是运行程序,将程序加载到内存当中;
  任何程序在被运行之前都必须被加载到内存当中;
  程序没有被加载到内存之前存在于硬盘(外设)之中;
  冯诺依曼体系(硬件概念)
  外设数据必须先加载到内存,再由CPU访存后,调回内存,转到输出设备(数据放置于内存之后,不是所有数据立马被计算,需要将数据暂时存放于变量之中)
  目的:CPU直接访存速度快,访问外设速度慢
  变量
  变量是在程序运行的时候开辟空间存储,而程序在运行之前就已经被加载到内存中了,所以,所有的变量本质都要在内存的某个位置开辟空间存储;
  定义变量:类型 变量名 = 默认值       例:int x = 10;  初始化,可二次赋值;
  在内存中暂时存放数据,等待CPU一个一个处理数据;
  定义与声明(extern)
  定义:开辟空间(只能有一次)
  声明:告知曾经定义过的变量(可以声明多次)
  代码块:用{}括起来的的区域,叫代码块;
  生命周期和作用域
  生命周期概念:指该变量从定义到释放的时间的概念
  作用域概念:变量起作用的范围
  局部变量:在函数和代码块内定义的变量;只能在本代码块有效;
  全局变量:在函数和代码块外定义的变量;在整个程序有效;
  局部变量和全局变量命名冲突时,局部变量优先使用;
  作用域:指该变量的有效区域(影响范围);
  生命周期:时间的概念,什么时候被开辟,什么时候被释放;
  aoto相关
  局部变量,,临时变量,自动变量说的都是一回事;
  auto只能用于修饰局部变量,可以省略
  结论:C语言和C++中使用auto不一样,在C语言中基本已经不使用;
  最快的关键字--register(存储级别的关键字)
  高优先级把变量放在寄存器中(建议性的)
  计算机中具有存储能力的硬件:
  寄存器,cache,内存,SSD/flash/硬盘,光盘
  离CPU越近的访问速度越快,越贵
  一般被高频读取的/局部的/不会被写入的/ 需要被定义register,如果要使用,不要大量使用,因为寄存器数量有限;
  写入:内存中的数据在CPU中被计算后更改了又重新写入到内存内;
  被使用后,没有在内存中,而是被开辟在寄存器中,所以没有申请空间,所以不可以被取地址&;
  现在的编译器很智能,不需要手动使用该关键字。
  寄存器可以被写入(可以被二次赋值);

  
文档来源:51CTO技术博客https://blog.51cto.com/u_15293050/3034916
页: [1]
查看完整版本: C_关键字_1