zoukankan      html  css  js  c++  java
  • C语言总结

    后缀名.c的文件是C程序的源文件
     
    1.新建文件 终端-> cd 路径 ->touch main.c
    2.编译文件 终端-> cc -c main.c 会生成出main.o文件 对应.c文件的二进制代码
    3.生成启动文件 终端-> cc main.o 会生成出a.out文件,此文件为最终可以执行的程序
    4.执行a.out程序 终端-> ./a.out 即可执行程序内容
     
    XCode 编译器
    Command + R 编译运行
    Command + B 编译
    Command + ,  设置  Text Editiong -> Line numbers 行号
     
    在project下创建多个target  
    点击项目名->点击左侧展开->点击下方+即可新建target,也可file->new target.
    运行按钮后方可选择默认启动项目
     
    #include <stdio.h> //导入系统的stdio.h头文件
    int main(){ //定义主函数 返回值为int
        printf(“输出”);
        return 0;
    }
    main函数是程序的入口,一个标准的C程序只能有一个main函数
     
    注释 单行// 多行/* */ 快捷键 command + /
     
    变量是存储在内存中的数据。变量名,变量值。
    数据类型:int 整型、float 单精度浮点型、 double 双精度浮点型、char字符型、
    声明变量 数据类型 变量名;
    为变量赋值 变量名 = 值; 
    int a = 1; float f1 = 12.12f; double d2 = 12.12; char c = ‘c’;
    printf(“%f”,f1);
    float 只能保存7位小数,如果超过了7位则不会精确保存。 Double 为16位。
    Char 只能保存单个字符,使用单引号,如果写两个则保存最后一个 c=‘cv’ 输出v
     
    输出变量的值
    Printf(“格式控制符“,变量名)
    int        %d
    float     %f
    double %lf
    char     %c
    Printf(“%d%f%c”,a,b,c);
     
    如果使用变量时未赋值,则值是随机的。
     
    格式化 快捷键 选中代码 Command + [左 ]右
     
    printf函数的使用
    1.printf(“输出信息”);
    2.printf(“%d”,number); //输出变量
    3.printf(“%5d”,number); //输出5位整数,如果不足5位就会以空格补齐。大于5位都显示。
    4.printf(“%04d,number”);//输出4位整数,如果不足就会以0补齐。
    5.printf(“%lf”,double);//如果double超过6位则不显示。
    6.printf(“%.2lf”,double);//输出double 2位,7位 8位都可以。
    7.printf(“%.2f”,float);//输出2位 float
     
    删除项目中的target时,左侧管理栏需要删,点击项目中 targets中也要删,上方启动项管理schemmes 点击-号删除。 这三个都要删
     
    数据类型转换
        当int a; a=2.5; 输出2 自动截取。 
        Double d = 1; 输出1.000000 自动加0
        Char c = 97; 输出a 为char可以直接赋值ascii码 ‘A’=65 ‘a’=97 ‘0’=48
     
    scanf函数 获取用户输入 
    Int num;
    scanf(“%d”,&num); //使用&符号获得变量地址
     
    自定义连接符
    scanf(“%d-%d-%lf”,&num1,&num2,&double3)  输入12-23-3.3 
     
    scanf函数的缓冲区
    1.在执行scanf函数输入数据后,先将数据存储在缓冲区。
    2.在执行scanf函数的时候,会先检查缓冲区中是否有数据,如果缓冲区中没有数据,就会让用户输入,如果缓冲区中有数据,则从缓冲区中将数据取出。
    scanf(“%d”,num1);
    scanf(“%d”,num2);
    如在输入第一个num时 输入10空格20回车 则第二个无需输入直接拿出20
    rewind(stdin); //清空缓冲区,否则无法输入回车 char会认为回车是一个空格输出
     
    交换两个变量的值
    1.用第三方变量 temp = num1; num1 = num2; num2 = temp;
    2.两数相加再相减 num1 = num1 + num2; num2 = num1 - num2; num1 = num1 - num2;
     
    算数运算符
    +加、-减、*乘、/除、%余
    算数表达式
    由算术运算符链接起来的式子,叫做算数表达式。
     
    算数运算符优先级
    先乘除,再加减。从左到右依次运算。
    小括号可以改变优先级
    char类型也可以参与运算,按照ascii码数字进行运算
     
    复合赋值运算符
    += -= /= *= %=
     
    自增自减运算符
    ++ —
    ++num; 前++ 先计算后运算 num++;后++ 先运算后++
     
    逗号表达式
    表达式1,表达式2,表达式3,...表达式n。
    从头到尾挨个执行,最后一个表达式的结果就是整个逗号表达式的结果。
     
    比较运算符
    >大于 <小于 >=大于等于 <=小于等于 ==等于 !=不等于 
     
    在C语言中 使用int类型的数据来表示真假, 0代表假 非0代表真。
     
    逻辑运算符
    && 与 || 或 !非
    优先级 ! && ||
     
    if分支结构 
    if(真){
    }elseif(真){
    } else{
    }
     
    变量作用域
    int num = 1; 
     
    if(num>0){
        int age=10; 
    }//当大括号内的程序执行完毕后,大括号内的变量会被立即回收。
     //在这就使用不了age了,因为已经被回收了。只能在上面访问。
    //可以使用num。
     
    三元表达式 int num = 2>1 ? 1 : 2 
     
    随机数
    #include <stdlib.h> //引入系统头文件
    调用arc4random_uniform(10); //生成0-9的一个随机数
     
    switch语法
    switch(rand){
        Case 1:
        Case 2:
            //1和2都执行的
            Break;
        Default:
            Break;
    }
    xcode快捷键
    command+0 隐藏/显示左侧
    command+option+0 隐藏/显示右侧
    command+12345 切换显示左侧项目菜单
    option+左键点击成U型文件 代码分屏
    command+shift+f 快速搜索项目
    command+shift+o 直接搜索代码的定义
    command+R 运行
    command+B 编译
    command+shift+0 参考文档
     
    调试
    在行号附近点击即可设置断点,取消断点按住往右一丢。
    stop over F7 F8
     
    循环
    while 先判断后执行
    do-while 先执行后判断
    for 固定次数的循环
     
    break;停止 continue跳出本次继续下次
     
    goto跳转语句
    将当前的语句跳转到当前函数的其他地方继续执行
    goto labelName;
    labelName: 在需要跳转的位置写入标签名即可。
     
    函数
    使用函数来实现代码的重用。
    返回值类型 函数名称([参数列表]){
        //代码块
    }
    viod test(){
    }
     
    如果想给方法使用文档注释 需要安装插件vvdocumenter
     
    变量作用域:
    局部变量:
        定义在函数内部的变量,作用于函数内。
        如果没赋值值是垃圾值。
    全局变量:
        定义在函数外部的变量,作用于全局。
        一般全局变量定义在#include下面,如果没赋值值是0。
     
    参数
    void test(int num); //形参:声明函数时的函数称为形式参数。
    test(1); //实参: 在调用函数时 实际为形参赋的值
     
    返回类型
    int getSum(int num1,int num2);
    return 立即结束此函数的执行,根据返回类型返回数据。
     
    函数定义时需要定义在上面,因为编译器在编译代码的时候是从上到下执行的。
     
    预处理代码
    在编译之前执行,以#号开头。
    文件包含指令:#include
        可以将制定的文件的内容拷贝到写指令的地方。
        #include ”文件路径“ //用于自定义的
        #include <文件路径> //用于系统自带的
    如:main(){
    #include “/users/david/desktop/test.txt” //将文本内容拷贝至此
    }
     
    相对路径,绝对路径。
     
    多文件开发
    1.新增一个.c文件时,如果函数写在其他文件中,调用时,需要先声明函数。
    int getSum(int num1,int num2);  //其他文件中实现 
    main(){
        getSum(1,2);
    }
    2.新增一个.h头文件,header file,将函数的声明写在此文件中。
    其他文件使用函数时,先#include header文件,这时就可以使用函数了。
     
    判断是不是偶数
    If((num & 1) == 0) 偶数
    交换两个变量的值
    A = a ^ b
    B = a ^ b
    A = a ^ b
     
    进制
    一种计数的方式,侧重点在于计数的时候是封多少进一。
    C语言可以识别的进制 二进制、八进制、十进制、十六进制。
     
    二进制:逢二进一,每一位数字由0或者1表示。
    0 1 10 11 100 101 110 111 1000
    在c语言中写一个二进制,需要在前面加一个0b的前缀。
     
    八进制:逢八进一,每一位只能是0 1 2 3 4 5 6 7
    0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22
    在c语言中写一个八进制,需要在前面加一个0的前缀。
    %o,将整型数据以八进制输出。
     
    十进制:逢十进一,每一位0 1 2 3 4 5 6 7 8 9
    在c语言中直接写一个整数,默认就是十进制的。
    %d,将整型数据以十进制输出。
     
    十六进制:逢十六进一,每一位 0 1 2 3 4 5 6 7 8 9 a b c d e f 
    在c语言中写一个十六进制,需要在前面加一个0x前缀。
    %x,将整型数据以十六进制输出。
     
    十进制转为二进制,除2取余法,直到余数为0或者1,然后将余数倒序就是这个十进制对应的二进制
    二进制转为十进制,加权法,将二进制数码的每个位权相加,就是对应的十进制
    十进制转为八进制,除8取余法,直到余数为0或者1,就是对应的八进制
    八进制转为十进制,加权法,将八进制的每一个数码的位权相加,就是对应的十进制
     
    内存中的数据存储单元是由一个个的二进制位组成的,每一个二进制位只能存储0或者1.
    将8个二进制分为1组,叫做1个字节,作为存储数据的最小基本单位。
    所以只要想往内存中存储数据,最少要存一个字节的数据,也就是8个二进制数据。
    8bit = 1byte
    1024 byte = 1kb
    1024kb = 1mb
    1024mb = 1gb
    1024gb = 1tb
     
    Int 4个字节
    double 8个字节
    float 4个字节
    char 1个字节
     
    sizeof运算符
    sizeof(数据类型|变量名|常量) 返回这个数据类型变量在内存中占据了多少字节。
    sizeof 变量名 常量 可以不加小括号
     
    数组
    int arr[5]; //声明 声明时必须填写长度 可以是常量、变量、表达式等
    arr[0] = 100; //赋值 不要超过下标写5
    Int arr1[3] = {1,2,3}; //声明并初始化数组
    int arr2[2] = {0}; //初始化所有值为0
    Int CCC[] = {1,2,3,4,5,6}
     
    C语言中的数组名存储的是数组的地址,所以 不能直接打印数组名,这样得不到数组中元素的值。
    所以使用%p打印数组名。
     
    数组的长度计算
    sizeof(arr) / sizeof(arr[0]) //计算数组总共占用的字节数 除以 每个元素占用的字节数
     
    值传递:
    Int ,float,double 作为参数 不改变原来的值
     
    引用传递:
    将数组作为函数参数,改变原来的值,在传递的时候传递的是实参数组的地址
    Void test(int arr[],int len){
        for(int I =0;i<len;i++){
            arr[i]=100;
        }
    }
    Main(){
        Int shuzu[] = {110,1,2};
        Test(shuzu,sizeof(shuzu)/sizeof(shuzu[0])); 
    }
     
    //数组反转
    Int arr[] = {10,23,34,23,5,6,45,7,45,34,8,100}
    Int len = sizeoff(arr) / sizeof(arr[0]);
    for(int I = 0;i<len/2;i++){
        Int temp = arr[i];
        arr[i] = arr[len-1-i];
        arr[len-1-i] = temp; //交换第0个 和 第12个
    }
     
    二维数组
    二维数组在内存当中创建了指定行,指定列的表格来存储数据
    声明二维数组
    数据类型 数组名 【行数】 【列数】
    赋值
    arr[0][0] = 100;
     
    声明并赋值
    Int arr[][4] = 
    {
        {10,20,30,40},
        {11,21,31,41} //自动确认行数
    }
     
    字符串
    在c语言中,使用字符数组来存储字符串数据。
    “Jack” = ‘j’ ‘a’ ‘c’ ‘k’ ‘’ 代表字符串存储结束。
    Char name[] = {“jack”} 自动加 长度5
    char name[] = “jack”
    %s 输出字符串
     
    判断字符串长度
    While(name[len] != ‘’)
     len++;
     
    字符串常用函数:
    puts():输出字符串.
    gets():接收1个字符串数据
    Strlen():返回字符串长度
    strcmp():比较字符串
    strcpy():拷贝到另外一个字符串
    strcat():连接字符串
     
    指针
    变量的地址就叫做指针
     
     
  • 相关阅读:
    java面向对象
    java 继承
    .net的 http 请求 利用单例减少创建销毁的资源开销 提高利用率
    net core 3.1 swagger文档添加 不用xml配置
    vs code 配置 golang 环境
    .net 使用RabbitMQ demo
    Centos7 上安装配置 RabbitMQ
    C# .net 获取程序运行的路径的几种方法
    c# Windows服务应用程序的创建、安装和卸载
    XCOPY命令 windows 一个文件夹里的文件 快速移到另一个磁盘里
  • 原文地址:https://www.cnblogs.com/baidawei/p/8665242.html
Copyright © 2011-2022 走看看