C语言基础——大总结

C语言大总结

   一、C语言的基本概念与常识

      1、所有计算机的指令与数据都是由 0、1构成
      2、C语言是由函数组成的
      3、C语言的入口是main函数
      4、源码 -> 编译 -> 链接 -》运行
 
 
      关键字:C语言提供的表示特殊含义单词
      标示符:程序员自己为某些东西起名字
      命名规则:
        1、字母、数字、下划线
        2、不能以数字开头
        3、不能与关键字重名
        4、严格区分大小写
      命名规范
        驼峰标示
    
      注释:对代码解释说明,是给程序员看的,方便程序员之间的交流
           1、注释不参与编译
           2、 单行注释 //  多行注释
      
       数据类型:按照存储时间
                静态数据:存储在硬盘上的数据
                动态数据:存储在内存中的数据
 
 
       常量:不可以改变量
       变量:可以改变的量,变量使用来存储常量数据的
       
       运算符
         算术运算符  + - * / %
         赋值运算符  = += -= /= *= %=
         自增自减   --a a-- ++a  a++
         关系运算符 == != > < >= <=
         逻辑运算符 &&  || !
         三目运算符 条件表达式 ? 结果1 : 结果2;
 

    二、数据类型

        基本数据类型
        int 、float 、double 、char
        枚举:当某个东西只有几个固定的取值的时候,我们就使用枚举
        定义格式 enum 枚举类型名{成员,... };
        作用:提高代码可读性
 
        构造类型
        数组:保存相同数据类型的多个数据的集合(容器)
        格式: 数据类型 数组名[元素格式]
        结构体:用来保存不同数据类型的多个数据的,相同的数据类型但可以表示特定含义的也可以使用结构体
        定义结构体类型的格式; struct 结构体类型名{ 数据类型 成员名; ... };
        特点:先定义结构体类型再定义结构体变量
        作用:提高代码的可读性、封装数据、然代码更有组织
 
        指针类型
        定义格式:所指向数据类型 * 指针变量名
        *作用:
            1、在变量定义的时候,它是一个说明符,说明定义这个变量是指针变量;
            2、在非变量定义的时候,它是一个操作符,访问指针所指向存储空间
        &作用:取出变量的地址
    
        * 与 & 是一对反操作符
 
        1、指针作为函数参数传递是地址传递
        
        指向数组的指针:
            int nums[5][10];
            int (*array)[10] = nums;
        指向结构体指针
            struct Person{int age;};
            struct Person person = {10};
            struct Perosn *p = &person;
            
            p->age;
 
        指向函数指针
            int sum(int num1,int num2) { return num1 + num2 ; }
            int (*sumPointer)(int,int) = sum;
            sumPointer();
    
        字符串:
            1、使用字符数组
             char name[] = "zbz"; //栈 : 可以修改的
            2、使用字符指针
             char *name =  "zbz"; //常量区  只读的
            3、字符串数组
               1、char类型的二维数组
                 char names[][10] = {"xhh","xff","xmf"};//栈
               2、char类型指针数组
                 char *names[] ={"xhh","xff","xmf"};// 常量区

 
    总结:所有的数据类型都可以定义变量
         所有数据类型都可以作为函数参数
         所有数据类型都可以作为函数的返回值

    三、流程控制

        顺序结构:按照从上到下顺序执行
        分支结构(选择结构):就相当于岔路口,根据不同条件指向不同代码
 
        if语句:当条件满足的时候,执行if后面大括号中语句
        1、if都是以if开头
        2、if语句最多只有一个else
        3、if语句可以有任意个else if
    
        4、if语句最多只有一个代码会被执行
 
 
        switch语句
            1、只支持整形数据
            2、如果表达式中值与case中的常量相等就执行这个case中语句
            3、只有遇到break和 } 才会结束
            4、只要匹配上一个case那么后面的case都失效了
        
        循环结构体:只要条件满足就指向循环体中的语句,直到条件不再满足为止
        while循环:当while后条件表达满足就指向循环体
        do while: 循环体中的代码至少会执行一次
        for循环:
        格式:for(初始化表达式;条件表达式;循环后操作表达式)
             {
                语句;
                ....
             }
 
        初始化表达式:在整个循环中仅执行一次
        条件表达式:在每一次循环前都会判断条件表达式是否满足,如果满足就执行循环体中代码
        否则就退出循环
        操作后表达式:在没有循环结束的时候都可以循环后操作表达式
 
        continue:
            只能用循环结构中,跳过本次循环中,continue后语句,进入下一次条件判断
        break:
            用在switch中,他是用结束switch语句的
            用在循环结构中,结束当前循环语句的
        

    四、 函数:完成特定功能代码段

         函数定义的格式:
                            形参列表
         返回值类型 函数名称(形参类型 形参名称...)
         {
            语句;
            ...
         }
 
        写一个函数步骤:
        1、确定函数功能,给函数起一个有意义名字
        2、确定形参列表(完成该功能是否需要外界传入一些补助值)
        3、确定返回值类型(完成该功能是否需要返回数据给调用者)
        4、写函数体,完成函数功能
 
        如果我们要在前面的函数中访问后面的函数,需要对函数进行声明
 
        多文件开发
        .h 中写函数的声明
        .c 写函数的实现(定义)
 
    注意点:
        1、基本数据类型作为函数参数传递是指值传递
        2、数组作为函数参数传递是地址传递
        3、指针作为函数参数传递是地址传递
        4、结构体作为函数参数传递是值传递

    五、进制

       十进制:逢 10 进 1     默认          %d
       二进制:逢 2 进  1   0b/0B开头       无
       八进制:逢 8 进 1    0开头           %o
      十六进制:逢 16 进 1  0x开头          %x %X
 
      位运算: &  |  ^  ~ >>  <<
 
   

    六、预处理指令:在编译之前进行解析处理指令

        宏定义:
        不带参数宏定义: #define 宏名 值
        作用:在预编译的时候,将代码中所有出现宏名地方都替换成值
        
        带参数宏定义:#define 宏名(参数列表) 表达式
        作用:在编译预处理的时候,使用表达式替换出现宏名列表的地方
             #define SUM(x,y) ((x) + (y))
             SUM(10,20) ====  ((10) + (20))
        条件编译:如果满足条件就编译if后面的语句
        #if 条件表达式
            语句;
        #elif
            语句;
        #endif
 
        1、防止头文件的重复包含
        2、可以处理项目上线与开发两种状态下执行不同代码
 
        文件包含:
        #inclue:拷贝文件
        #inclue "" 包含自己写头文件
        #inclue <>  包含系统自带头文件

    7、typedef

        1、给基本数据类型起别名
         typedef int Integer;
 
        2、给结构体起别名
         typedef struct{
            int age;
         } Person;
 
        3、给枚举类型起别名
         typedef enum{
                Man,
                Woman,
                Other
         } Sex;
    
        4、指针类型起别名
        
        typedef int * Int;
        Int p;
        5、给函数指针起别名
        int sum(int num1,int num2) {return num1 + num2; }
        
        typedef int (*Pointer)(int,int);
        Pointer sumPointer = sum;
        sumPointer();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值