华清远见—重庆中心—C基础知识点总结

目录

一,什么是C语言?

 二,C语言组成:

三.基本数据类型: 

四,数据的存储类型: 

五,C语言内存 存储位置:

六,C语言的输入与输出: 

七,C语言的控制语句: 

八,数组    

九,函数


​​​​​​

一,什么是C语言?


  是一种高级语言  相比于其他高级语言而言, 更贴近硬件 可以直接操作内存,硬件设备 其运行效率是最高的 运行需要的硬件开销小

 
二,C语言组成:


1. 关键字 :
           由编译器定义的 有特殊含义的词汇  不能用作他用
类型相关的:  auto  char   const   double   extern   float  int  longregister    short    signed   unsighed    void  static  enum    union  struct
结构相关: if else ,goto ,for   ,do  while   ,break  , continue ,switch    case,   default ,return     ,sizeof  typedef   volatile                            
2. 标志符 :
           由编程者 自定义的, 名字  ,变量名 , 函数名 ,..名 只能由 数字 字母 下划线 组成 ,不能以数字开头 不能与关键字重名。例如:a123_  _asdfw  asdgasdf   AAA
3. 运算符: 
           由编译器定义的 特殊标点符号 表示数学运算或某些特殊动作 
按功能可以分为:    
    (1)算术运算符、   + - * /   %  (取余数) 结果为 一个数值 
    (2)逻辑运算符、  逻辑与  (&&)     逻辑或(||)   逻辑非(!)    结果为真(1 非0 )或假 ( 0 )
    (3)关系运算符、   比大小  > <  >= <=  ==  !=          结果为真(1 非0 )或假 ( 0 )
    (4)位运算符、    将数值以二进制方式进行运算  按位与 &   按位或 |  按位亦或 ^     按位取反~    按位左移<<    按位右移 >> 
    (5)赋值运算符、  更新变量的值  a  =+ B  ===>  a = a + b
        =   +=  -=  *=  /=
    (6)递增递减运算符、  ++  --    单目运算符  a++; ++a;
    (7)地址运算符、  取地址运算 &a      取值运算符 *地址  
    (8)逗号运算符、  ,  使用','分割各个表达式,其值为最后一个表达式的值 但 其他表达式都会执行一次 
    (9)sizeof运算符  sizeof() 计算变量占用的存储空间 
    (10)三目运算符:   表达式1  ?  表达式2 : 表达式3 
                 (11)单目运算符   运算符与 一个值或变量 进行运算 
    (12)双目运算符   运算符与 两个值或变量 进行运算  通常运算符在中间(中值表达式)
4. 分隔符  :
           为了程序的美观易读而引入的一些排版操作不影响程序本身的空格   回车换行   制表符  注释(//   单行注释 ) 
    多行注释  
    /*  
    */ 

    #if 0
    #endif 

5. 标点符号 : 
          参与程序的表示, 需要严格按照规定使用 ,有些标点符号出现在表达式中为运算符使用 每一条C代码的结尾需要使用; 作为结束符 ,所有符号均严格区分大小写, 严格区分中英文 ,'#'开头的标志符 用于给编译器使用 指定如何编译这个C代码 

三.基本数据类型: 


    1.布尔类型:  数值的bool判断非0为真 0 假
    2.精确类型:
         (1)整型   4字节宽度 :  int (signed int) 表示, 数取值范围 ( - 2^31 ~ + 2^31-1)
                 unsigned int 无符号整型  0- (2^32 -1)
         (2)短整型  short (signed short)  2字节存储一个整数  取值范围(- 2^15 ~ + 2^15-1)
                  unsigned short  无符号整型  0- (2^16 -1)  
         (3)字符型  char  signed char  1字节 存储一个整数( -128 ~ + 127 )
        unsigned char  0-255
         (4)long int  长整型: 
                      (5)浮点型:  小数 ( 例如2.5  ,3.7  ) 非精确表示法 
        4字节浮点数  float  ( -2^128 ~ + * 2^127 ) 精度 6位10进制
        8字节浮点数  double                                
    3.void类型:  空类型      
        1.描述 函数的返回值或 参数没有 
        2.指针 指向的类型 不确定 或 任意类型 
        
                  4.常量:  在设计程序时就确定的不会在程序运行过程中改变的量 
        数值常量,指数常量,字符常量,字符串常量,标志常量: (宏定义   类似于字符串替换) 
    5.变量: 
                         本质是一个容器可以存放数的容器 ,在C语言中定义一个变量:  本质申请存储空间 
                         格式:   存储类型   数据类型   变量名 ; 


四,数据的存储类型: 


    auto:  自动  可以省略 由编译器决定存储位置 
    static: 静态区   修饰变量时 表示 指定该变量空间在静态区
    register: 寄存器存储类型  表示该变量 应放到CPU的寄存器中 
        不是强制的 只是建议 
    extern : 引用存储类型    多文件编程中 
        表示 不需要给该变量 分配存储空间  表示在其他文件中 已经被定义了 
        该文件 只是引用 该变量 
    const:  常量类型  指定变量的存储空间 位于常量区  仅在修饰全局变量时 
        若 const 修饰局部变量  其存储空间位置不会改变 仅表示 该变量只读 
 


五,C语言内存 存储位置:

   1. 代码段/常量区:该段内存 只读 不允许修改 
    2. 静态区:该段内存 可读可写在程序运行前就分配好了, 且其中的 变量会 一直存在直到程序结束 (生命周期长)
                                   全局变量(在函数外定义的auto变量) 或 静态变量(使用static 修饰的变量) 
    3. 栈区 :该段内存 会自动(在程序运行中)分配  
    4. 堆区  :该段内存 由程序运行时 程序员设计 申请与释放(分配)

六,C语言的输入与输出: 


                            1.输入输出函数:
                   putchar();   //输出一个字符到终端 
                   putc(); //输出一个字符到终端
                   puts(); fputs();  //输出字符串 // 字符串的格式化输出
                                printf();
                                printf( 格式控制字符串, 可变长参数表 );  
                            2.输出格式:                  
                               %d  %i  十进制数 ,%x  %X  十六进制数,%u 无符号十进制数,%c一个字符 ,%s  一个字符串,                               %e指数形式显示 ,%f小数形式显示 ,%% 输出字符'%' 本身,指定输出字符宽度  %4d ,输出宽度对齐                            默认 右对齐   %-8d  左对齐 ,输出小数,指定小数位数  %.2f  保留2位小数 四舍五入,%#x  输出十六进制                          数 附带前缀 0x
    
                         3.C语言的终端输入: 
    getchar(); 从终端读取一个输入字符,fgets(); 从终端输入一个字符串 ,gets();  有溢出风险 已经弃用
        

七,C语言的控制语句: 


    一个C程序的组成: 
    1.编程的3种结构: 
        1.顺序结构: 依次向后执行 
        2.分支结构: 依据某种条件选择程序的 执行路线 
        3.循环结构:  重复执行某些动作 
                 2.分支结构: 
    
(1).if结构:
if( 条件表达式  )
{
    代码块1;; 

else
{
    代码块2;;
}

其运行逻辑: 当 条件表达式 为真时, 程序将执行  代码块1;; 否则 执行 代码块2;; 
 (2)if 语句的嵌套:     
if( 条件表达式1  )
{
    代码块1;;
    if(条件表达式2){ 代码块3 ;; } else {代码块4 ;;}
    代码块5;;

else
{
    代码块6;;
    if(条件表达式3){ 代码块7 ;; } else {代码块8 ;;}
    代码块9;;
}


(3)多分支结构 switch case:         
    switch( 整型表达式 )
    {
        case 常量1: 语句块1;;
        case 常量2: 语句块2;;
        case 常量3: 语句块3;;
        .....
        default: 语句块n;;
    }

整型常量表达式: 其运算结果是一个整型常量 
运行逻辑: 
    计算  整型表达式 的值  对该值 匹配"==" case中的常量 
    若 没有任何一个匹配 执行default中的语句块 , default中没有语句块时 可以省略
    若匹配  则从此处开始 一直向下执行 

(4)switch case 多选1模式 
结构: 
    switch( 整型表达式 )
    {
        case 常量1: 语句块1;;  break;
        case 常量2: 语句块2;;  break;
        case 常量3: 语句块3;;  break;
        .....
        default: 语句块n;;   
    }

关键字 break;  表示跳出结构
(5)switch: 注意事项
    1. switch的()括号中 只能给整型表达式
    2. case 后边 只能给定常量,或整型常量表达式  在程序没有运行前 就可以计算出来的值 
    3. 有无break 会极大的影响程序的运行动作 

3.循环结构:
while循环: 
                  结构1:
     do{ 循环语句块;;  } while( 条件表达式  );
                 运行逻辑:  (1) 先无条件执行一次  循环语句块;;  (2) 再判断 条件表达式  若真 执行 循环语句块;;  回到动作(2)继                                       续若假 结束while;
    结构2:
        
                  while( 条件表达式 ) {循环语句块;;} 
        运行逻辑:    (1) 先判断 条件表达式 若真 执行 循环语句块;;  回到动作(1)继续若假结束while;

for循环: 
    结构:
    for( 表达式1 ; 表达式2  ; 表达式3 )
    {
        循环体;;
    }


八,数组    

数组:  是一种构造的数据类型 ,将 多个相同类型的 数据 在内存中 有序 连续存放  这种结构称作 数组结构 
    元素:  数组中的 单个数据 称作数组的 元素
    数组 的定义:  存储类型   数据类型  数组名 [ 元素个数 ];
    存储类型:  决定数组在内存中的区域
    数据类型:  决定数组元素的类型 
    数组名:    一个标志符 自定义 
    []  :      是标点符号 不能缺少表示这是一个数组 
    元素个数:  指定数组元素的个数目的是指定占用的内存
    数组名:  (1) 代表这个数组   arr[0]
                 (2) 代表这个数组的首地址   arr

九,函数

什么是函数?:将某些完成特定功能的 代码的 有序集合;
    
函数的定义: 
    返回值类型   函数名 (形参列表)
    {
        函数体;; // 代码块
        return ;
    }

返回值: 一个函数即一个特定的功能 对于该功能 可能需要输出或返回执行的结果给调用者
返回值类型: 即指定 函数返回值的类型;
函数名: 标志符 自定义  不能与同文件的其他函数重名 

形参列表: 代码块完成该功能 可能需要外部给定一些参数  

函数调用:  执行代码块 
    函数名(实参列表);

形参与实参: 
    实参是调用者 传递给函数 的 形参的值 , 是实参值的拷贝;
    函数操作形参 是不会影响实参的
    
地址传参: 即 形参传递的内容是 实参的地址, 此种情况下 可以通过这个地址(形参) 操作实参 
    了解  下门课 详细学习 

函数声明: 
    在函数被调用前, 将除函数体外 的部分 放在调用前的 函数外; 

函数原型: 除函数体,剩下的部分即函数原型
 

  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值