2019/8/19 C语言回顾

Posted epll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019/8/19 C语言回顾相关的知识,希望对你有一定的参考价值。

一、冯诺依曼
  将计算机分为5个部分
  (1)输入设备:键盘、鼠标
  (2)输出设备:显示屏
 
  (3)存储器:
    内存(运行内存)RAM:内存条
    外存 ROM: 硬盘、光盘、u盘、sd卡
    寄存器:在cpu内部 、提高程序的运行效率
 
   (4)运算器
   (5)控制器
  注:运算器和控制器集成为cpu
 
二、进制转换
  1、十进制  逢十进一    78 = 8*10^0 + 7*10*^1
  二进制  逢2进一      1001110
  八进制  逢8进1
  十六进制  0,1,。。。。a,b,c,d,e,f
 
  3位二进制数可以视为一位8进制数
  4位二进制数可以视为一位十六进制数
 
  2、 ascii码表
  0 === ‘\0‘
  10 === ‘\n‘
  32 === ‘  ‘
  48 === ‘0‘
  65 === ‘A‘
  97 === ‘a‘
 
  3、词法符号   关键字
  c语言中一共有32个关键字:
auto 声明自动变量
short 声明短整型变量或函数
int 声明整型变量或函数
long 声明长整型变量或函数
float 声明浮点型变量或函数
double 声明双精度变量或函数
char 声明字符型变量或函数
struct 声明结构体变量或函数
union 声明共用数据类型
enum 声明枚举类型
typedef 用以给数据类型取别名
const 声明只读变量
unsigned 声明无符号类型变量或函数
signed 声明有符号类型变量或函数
extern 声明变量是在其他文件正声明
register 声明寄存器变量
static 声明静态变量
volatile 说明变量在程序执行中可被隐含地改变
void 声明函数无返回值或无参数,声明无类型指针
if 条件语句
else 条件语句否定分支(与 if 连用)
switch 用于开关语句
case 开关语句分支
for 一种循环语句
do 循环语句的循环体
while 循环语句的循环条件
goto 无条件跳转语句
continue 结束当前循环,开始下一轮循环
break 跳出当前循环
default 开关语句中的“其他”分支
sizeof 计算数据类型长度
return 子程序返回语句(可以带参数,也可不带参数)循环条
 
  4、标识符
    1)、以字母、数字和下划线组成
    2)、不能以数字开头
    3)、不能和关键字重名
 
  5、分隔符
    换行 空格 tab  注释
 
  注释:
  1、// :注释掉注释符之后那一行内容
  2、/* ... */:注释两个符号中间的所有内容
  3、#if 0    #endif
 
  6、运算符
  7、标点符号
 
  三、计算机基础
  数据类型 (规定了数据的所占空间大小以及数据的取值范围)
 
  l)基本数据类型
  1、逻辑类型     bool类型    只有两个值  true false ,如果使用到true 和 flase,需要加上头文件 <stdbool.h> ,在c语言中0代表假,非0值代表真
 
  2、基本类型
  【1】整型
  (1)、字符型(本质就是整型)
  ‘a‘    97        0~127
  char 在内存空间中占1个字节大小 0~255 -128~127
  数据越界:数据越界并不会报错,只是显示的结果并不是我们想要的
  无符号 unsigned
  有符号 signed (编译器默认为有符号类型)
 
  如果是有符号数据,则最高位以0表示正数、1表示负数
  原码 正数的原码、反码和补码相同
  反码 负数的反码保存符号位不变,其余位取反
  补码 负数的补码在反码的基础上加1
 
  (2)整型
  short 在内存空间中占2个字节大小
  int 在16位机中占2个字节,在32位机中占4个字节
  long 在32位机中占4个字节,在64位机中占8个字节
 
   (3)、浮点型
  编译器一般默认保留小数点后6位
  float 单精度 一般情况下精确到小数点后6位 占4字节 有效位为7位
  double 双精度 一般精确到小数点后16位      占8字节 有效位为17位
 
  double a;
  scanf("%f",&a); //应用scanf("%lf",&a);
  执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。
  而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。
 
  故double型的输入输出形式如下:
  double a;
  scanf("%lf",&a);
  printf("%f",a);
 
  
  四、常量         在程序执行过程中不会被改变的量
 
  1、整型常量      10
  2、浮点型常量   1.23
  3、字符常量       ‘a‘ ‘0‘
  4、字符串常量    “hello”   以‘\0’结尾
 
  5、标识常量
  宏定义
  一般情况下宏定义放在头文件下方
 
  #define  标志符   被替换的内容
  被替换的内容:可以是一个常量,也可以是一个表达式,甚至可以是一句语句
  宏定义是完整的字符串替换
  
  五、变量
 
  局部变量 局部变量的作用域在定义的函数内部
  全局变量 全局变量的作用域是整个文件
 
  定义变量的一般形式
  存储类型 数据类型 变量名;
  1、auto 只能够修饰局部变量,如果不写存储类型的话编译器默认为auto类型
  2、register 寄存器类型  
  所修饰的数据会存储在寄存器中,提高程序运行效率,但是如果寄存器空间占满,register修饰的数据会自动转化为auto类型
  3、extern 外部声明
  声明和定义的区别
  注意:同一个工程的所有文件需要同时编译,但注意一个工程只能够有一个main函数
  初始化:在定义的同时赋值
  int a = 10;
 
  int a;
  a = 10; //单纯的赋值操作
 
  作用域:
 
  4、static 静态的
  1、修饰全局变量
  限制了全局变量的作用域,则其他文件无法通过外部声明的方式引用
 
  2、修饰局部变量
   存储空间从栈区改变为数据区。
   延长了局部变量的生命周期(作用域不变)
   只能够初始化一次并且值会保留
 
  3、修饰函数
  仅本文件可用,其他文件无法引用。
 
  六、数据类型转换
  隐式转换 : 编译器优化
  1、赋值运算
     可能会导致数据越界
     int a = 129;
     char b = a;
  当高进度数据转化为低精度数据时,可能会导致精度丢失
     float a = 1.23;
     int b = a;
 
  2、算术运算
  当高精度数据和低精度数据进行运算时,结果会转化为精度较高的数据类型
  3、当有符号数据和无符号数据进行运算,结果会转化为无符号类型
 
 
  强制转换 :人为操作
  int a = 129;
  char b = (char)a;
  注意:a本身还是原来的类型
 
  七、运算符
 
  1、赋值运算符   =
  2、算术运算符 (双目运算符)
  +  -  *  /
  % (只能够使用在整型运算当中)
 
  ++ (单目运算符)
  a++;
  ++a;
  a = a + 1;
  在赋值运算,算术运算和printf中会有区别
  ++在前 先运算,后取值
  ++在后 先取值,后运算
 
  注意:在同一个表达式中,不可以对同一个变量进行多次赋值操作;
  int b = a++ + ++a + a++ + ++a;
 
  --
  a--
  --a
  a = a - 1
  3、关系运算符
  4、逻辑运算符
  5、位运算符
  6、特殊运算符

以上是关于2019/8/19 C语言回顾的主要内容,如果未能解决你的问题,请参考以下文章

一周回顾:5个C语言实例

期末考试一篇文章带你系统回顾C语言,轻松应对考试

浅谈面向对象思想在C语言的运用(热文回顾)

C语言基础回顾

19年秋招试题回顾(C语言)

2019/8/20 C语言回顾