栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 学习笔记 2021年10月27日

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 学习笔记 2021年10月27日

二、编译器
        负责把人能看得懂的用代码记录的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器
        gcc是由gnu社区为了编译Linux内核代码而开发一款免费的编译器,默认采用C89编译语法, -std=gnu99 可以设置为C99语法
        gcc code.c -> a.out(可执行文件、二进制文件)
                常用的参数:
                        -E 显示出预处理结果
                        -S 生成汇编代码
                        -c 只编译不链接
                        -o 设置编译结果的名字
                        -std= 设置编译语法
                        -I  指定头文件的加载路径
                        -l  指定要使用的库文件libm.sc(-lm)
                        -Wall  更严格地检查代码,尽可能得产生警告
                        -Werror  把警告当错误处理

三、C代码源文件编程可执行文件的过程
        1、预处理:把源文件翻译成预处理文件
        gcc -E code.c                         把预处理结果打印到终端
        gcc -E code.c -o code.i        生成以.i结尾的预处理文件
        2、编译:把预处理文件翻译成汇编文件
        gcc -S code.i                        生成以.s结尾的汇编文件
        3、汇编:把汇编文件翻译成二进制的目标文件
        gcc -c code.s                        生成以.o结尾的二进制文件
        4、链接:把若干个目标文件合并生成一个可执行文件
        gcc a.o b.o ...                        默认生成a.out可执行文件

四、C语言文件类型
        .h                头文件
        .h.gch         头文件的编译结果,它会被优先使用
        .c                源文件
        .i                预处理文件
        .s                汇编文件
        .o                目标文件
        .so              共享库文件
        .a                静态库文件

五、数据类型
        为什么要对数据进行分类:
        1、现实社会中的数据就是自带类别属性
        2、对数据进行分类可以节约存储空间、提高运行效率

        存储空间的单位:
                Bit 比特    一个二进制位,只能存储0或者1,计算机存储数据的最小单位
                Byte 字节   八个二进制位,计算机存储数据的基本单位 
                Kb  1024字节
                Mb  1024kb
                Gb  1024Mb
                Tb  1024Gb
                Pb  1024Tb
 

C语言中数据分为两大类:自建(程序员自己设计的:结构、联合、类)和内建(C语言自带的)
    注意:可以使用sizeof运算符计算类型的字节数

        内建:
            整型:
                有符号 signed
                    signed char     1   -128~127
                    signed short    2   -32768~32767
                    signed int      4   正负20亿
                    signed long     4/8
                    signed long long    8   正负9开头19位整数

                注意:signed 不加就代表加

                无符号 unsigned
                    unsigned char     1     0~255
                    unsigned short    2     0~65535
                    unsigned int      4     0~40亿
                    unsigned long     4/8
                    unsigned long long    8     0~以1开头的20位整数

                注意:由于定义无符号数据时比较麻烦,标准库把这些无符号的类型重新定义成了以下类型:
                    使用时需要包含头文件:stdint.h
                    uint8_t      int8_t              
                    uint16_t    int16_t
                    uint32_t    int32_t
                    uint64_t    int64_t
                   
            浮点型:
                float       4       
                double      8
                long double     12/16
                注意:采用科学计算方法,二进制与真实数据时间需要进行换算,因此浮点型数据耗时要比整形数据多得多,编程时尽量选择整型
                小数点后六位有效

                time ./a.out    计算程序运行时间
                注意:浮点数求余,编译错误

            模拟型:
                字符型char
                    字符其实就是符号或图案,内存中存储的是整数,当需要显示成字符时会根据ASCII码表中对应的关系显示出相应的符号或图案
                    '' 0        
                    '0' 48
                    'A' 65
                    'a' 97

                布尔型bool
                    先有了C语言之后才有了bool类型,所以C语言中是不可能有真正的布尔类型,stdbool.h头文件对布尔类型进行了模拟
                    bool    true    false

可以使用sizeof()运算符计算类型、变量占用的字节数
例如:sizeof(int)

七、变量与常量
    什么是变量:程序在运行期间数据可以变化的叫做变量,相当于储存数据的盒子
    定义:
        类型 变量名;
        int num;
        取名规则:
            1、由字母、数字、下划线组成
            2、不能以数字开头
            3、不能与32个C语言的关键字重名
            4、见名知义(功能、类型、范围...)
 注意:变量的默认值是随机的,为了安全起见要进行初始化,一般初始化为0
使用: 
            赋值: num = 100;
            参与运算: num * 10;

        变量的输入、输出:
            int printf(const char *format, ...);
            功能:输出数据
            format:"双引号包含的格式信息(提示信息+占位符)"
            ...:变量列表
            返回值:输出字符的个数

            类型占位符:C语言中通过类型占位符的方式来传递变量的类型
            %hhd %hd %d %ld %lld    有符号
            %hhu %hu %u %lu %llu    无符号
            %f %lf %LF                        浮点型
            %c %s                               字符型

            int scanf(const char *format, ...);
            功能:输入数据
            format:"双引号包含的格式信息(占位符)"
            ...:    变量地址列表    &变量名
            返回值:成功输入的变量个数
            注意:scanf需要的是变量类型、变量地址
                变量地址 = &变量名

        常量
            什么是常量:程序运行期间数据不能变化的叫常量
                100     默认int
                100u    unsigned int
                100lu   unsigned long
                100llu  unsigned long long
                100l    long
                100ll   long long

                3.14    默认double
                3.14f   float
                3.14l   long double

八、格式化输入输出
    %nd     显示n个字符宽度,不够则补空格,右对齐
    %-nd    显示n个字符宽度,不够则补空格,左对齐
    %0nd    显示n个字符宽度,不够则补0,右对齐
    %n.mf   显示n个字符宽度(小数点算一位),不够则补空格,m表示小数点后的位数(五舍六入)
    %g      显示浮点型数据并且不显示小数点后多余的0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号