学ios需要了解的C语言基础知识-11-C语言精华总结

来源:互联网 发布:linux查看elf文件 编辑:程序博客网 时间:2024/05/19 06:51
精华总结
/*
  1、计算常识
     1、计算只能识别0、1,所有计算中的一切都是由0、1组成的
     2、静态数据:存储在硬盘上的数据
        动态数据:存储在内存中数据
        静态数据与动态数据是可以相互转换的
  2、1、C语言是有函数构成的
     2、函数只有调用的才会执行
     3、main是程序的入口,程序启动只会执行main函数
     4、每一条语句都必须以分号结束
     5、只有注释和“ ” 中可以出现中文或中文符号,其他位置都不可以
     6、C语言程序的开发过程
        写源代码 -》 编译 -》链接 -》 运行
  3、关键字:C语言提供表示特殊含义的单词
  4、标示符:程序员自己为某些东西起名字  
           变量名、函数名、宏名、结构体类型名、枚举类型名称
     命名规则:只有由字母、数字、下划线组成
              不能以数字开头
              不可以与关键字重名
              严格区分大小写
     命名规范:1、起一个有意义的名字
              2、驼峰标示
   5、注释:对程序解释说明,他是写给程序员的看的,所以它不参与编译
      单行注释 和 多行注释
     1、多行注释可以嵌套单行注释
     2、单行注释可以嵌套多行注释
     4、多行注释不可以嵌套多行注释
   6、常量:不可以改变量
     变量:可以改变的量
     定义格式: 变量类型 变量名称
     变量的作用域:
     1、从定义的哪一行开始直到所在的代码块结束为止
     2、如果内部代码块中有与外部代码块同名的变量,那么内部代码中的变量会覆盖外部代码块中定义的变量
     3、当程序执行到定义的哪一行被创建,当程序执行到其所在的代码块结尾为止,被销毁
   7、 printf :用往屏幕上输出点东西
       scanf  :用于接收用户的输入
 
   C语言中数据类型:
   基本数据类型
   整形
       int  4字节   %d %i
       short 2字节  %hd
       long  8字节  %ld
       long long 8字节 %lld
       unsigned 4字节  %u
   浮点型
     单精度:float  4个字节  %f
     双精度:double 8字节    %lf
   字符  char   1字节   %c
   枚举:当一个变量只有几个固定的取值时候使用枚举
   特点:先定义枚举类型,然后使用枚举类型定义枚举变量
   作用:提高代码的可读性,方便程序员之间的交流
   枚举的实质是整形
   枚举定义的每一个成员都代表一个整形常量,默认情况下成员是从0开始依次递增1
构造类型
    1、数组:用于存放多个同种类型数据
        定义格式:数组类型 数组名称[元素个数]
        1、当我们定义的一个数组的时候系统会为这个数组开辟一个连续存储区域
        2、数组名是数组的地址
        3、系统是如何根据下标访问某个元素:首先根据数组的地址计算处理这个元素的地址,然后访问它存储空间  array的地址 + 下标 * 数组类型
    2、结构体:用于存放多个不同数据类型的数据的,若相同的数据类型可以表示特殊含义也使用结构体
       结构体作用:让数据结构化
       特点:先定义结构体类型 然后在定义结构变量
            结构体可以嵌套,但是不可以嵌套自己,但可以嵌套自己的指针
       结构体作为函数参数传递是值传递
       结构体指针作为函数参数传递是地址传递
 指针类型:
     指针就是地址,有了地址我们可以访问它所指向的存储空间
     指针变量:用于的存放地址变量
     定义格式:所指向的数据类型 *指针变量名称
 
      *作用:
       1、定义变量的时候,它使一个类型说明符,说明定义的这个变量是一个指针变量
       2、在非定义的变量的时候,他是一个操作符,访问指针所指向的存储空间
      &作用
       1、作为单目操作符,它是取出变量的地址
       2、作为双目运算符,它使按位与
    指针与函数
        1、指针作为函数参数传递是地址传递
        2、指针函数:返回值为指针的函数
           1、不可以返回局部变量的地址
           2、可以返回常量的地址
           3、可以返回堆中的地址
        3、函数指针:指向函数的指针
           定义一个函数指针
           所指向的函数的返回值类型  (*指针变量名称)(所指向的函数的形参列表)
     
   结构体指针:指向结构体的指针
   struct 结构类型名 * 指针变量名称
   struct Person{ int age ;};
   struct Person p;
   struct Person *pp = &p;
   pp->age = 20;
 
   字符串:
      使用字符数组,存储在栈中,它里面字符是可以修改的
      使用字符指针,存储在常量区,它是只读的
   总结:
    1、所有的数据类型都可以定义变量
    2、所有的数据类型都可以作为函数参数
    3、所有的数据类型都可以作为函数的返回值
 
 3、流程控制
    分支结构:
     1、if语句:当条表达式满足的时候就执行if后面大括号中语句
        三种格式: if,if else , if else if else
        特点:1、只有一个代码块会被执行
             2、若有else那么必有一个代码会被执行
             3、一个if语句中只能以if开头,最多只能有一个else,可以有任意个else if
 
     2、switch(表达式){
            case 常量:
              ...
             break;
             case 常量1:
             ...
             break;
             default:
             ...
             break;
        } :
     使用场景:当一个变量只有几个固定的取值的时候就使用它
     注意点:1、case后面的常量不可以相同
            2、它仅支持整形数
    循环结构:当条件满足就执行循环体中语句,直到条件不再满足为止
     while:当条件满足就执行while后面大括号中的语句
     do while:循环体中的代码至少执行一次
     for(初始化表达式;条件表达式;循环后操作表达式){
            语句;
            ....
     }
     1、初始化条件表达在整个循环中仅仅执行一次
     2、在每一循环开始的时候都会执行条件表达式,如果条件满足就执行循环体,直到条件不再满足为止
     3、每一次循环结束的时候都会执行循环后操作表达式
 
  4、 函数:完成特定功能代码段
     特点:函数只有调用的时候才会执行
     定义格式:返回值类型 函数名称(形参类型 形参名称,...){
                  语句;
                  ...
             }
     函数参数
        形式参数:在定义函数的时候,函数名后面小括号中的参数
        实际参数:在函数调用的时候,函数名后面小括号中的参数
        注意点:
        1、形参与实参必须一一对应
        2、实参与形参的类型必须一致
        3、基本数据类型作为函数参数传递是值传递
        4、数组作为函数参数传递是地址传递
        5、指针作为函数参数传递是地址传递
        6、结构体作为函数参数传递是值传递
    返回值:
       return 作用:
       1、结束函数
       2、返回数据给函数调用这个
       注意点:
       1、什么样的返回值类型就必须返回什么类型的值
       2、如果没有返回值,返回值类型就是void,此时可以没有return语句,若需要提前结束函数,可以使用return;
       3、若没有写返回值类型,那么默认为int(开发中不可以省略返回类型)
     函数声明:
        1、把函数头考过来加一个;
        2、告诉编译器这个函数已经存在了
其他:
    1、预处理指令
      1、 不带参数的宏定义:
       格式: #define 宏名 值
       作用:提高代码的可读性
      在程序编译前把所有出现宏名标示的位置都替换为定义宏的时候,宏名后面的值
     2、 带参数的宏定义
        格式 #define 宏名(参数列表) 参数表达式
        作用:在编译之前,把所有出现宏名(x)地方,都替换成把 参数代入参数表达
        我写带参数的宏定义的时候,需要把每一个参数和结果都使用()扩起来
    3、条件编译:
       格式: #if #elif #else #endif
       作用:当条件满足的时候就编译它后的语句
       注意点:条件编译必须以#endif结尾
    4、文件包含
       #include :把include 后面的文件内容拷贝到#include 的地方
       #include "" 用来包含自己写文件
       #include <> 用于包含系统提供头文件
    typedef:给数据类型起别名
    1、基本数据类型
    2、结构体
    3、枚举
    4、指针
    5、指针函数
0 0
原创粉丝点击