2021.10.28 day04 C语言的基础笔记(一)

本文介绍了C语言的历史、特点,并详细讲解了C语言的第一个程序,包括预处理指令、头文件和主函数的作用。还讨论了C语言的编译过程,以及常用的编译器GCC和其参数。最后,概述了C语言的数据类型,如整型、浮点型和字符型,并提到了存储空间单位和数据类型的表示范围。
摘要由CSDN通过智能技术生成

C语言诞生于1970-1973年,在肯.汤普逊和丹尼斯.里奇的合作编写下
完成,归属于美国贝尔实验室
C语言是专门为了编写操作系统而诞生的语言,c语言天生适合对硬件编程
以速度快而著称,也非常适合编写实现数据结构与算法
c语言由于时间过早,有很多缺陷,也没想到普通人也能使用c语言编程
,因此存在着陷阱,,前辈们总结了避免陷阱的经验《c陷阱和缺陷》
《c语言三剑客》《c程序设计语言》
c语言的语法很自由,自由源于自律
BCPL->newB->C->UNIX->Minix->Linux->gcc

c89语法标准,也是gcc编译器默认的语法标准
c99语言标准,是对c语言的扩展和增强 -std=gnu99
c11的语法标准,全新升级

一.第一个c语言程序
#include <stdio.h>
程序员所编写的代码不是标准的c代码,需要一段程序把它翻译成标准c代码
负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的语句叫做预处理指令
以#开头的语句都是预处理指令
    #include 的功能是吧一个头文件导入到当前文件中
        #include<>从系统指定的路径下查找头文件,找到加载导入
        #include""先从当前目录查找头文件,如果没找到,
        再从系统指定的路径下查找头文件,找到加载导入

        stdio.h
        头文件:以.h结尾的文件,里面存储的是一些辅助性的代码
            绝大多数内容是对函数的申明
        源文件:以.c结尾的文件,里面主要是对函数的实现,
            功能性的代码
        由c语言标准为员会为c语言提供的一套常用的基础功能,
        以函数形式存在,这些函数都被封装在libc.so库中
        会有很多的头文件负责对libc.so库中的代码进行申明
        stdio.h是其中一个
        main函数:
            c语言中是以函数为最小单位来管理代码,一个函数就是一段具有某个功能
            的代码段
            main函数十程序的执行入口,有且只有一个
            int 是一种数据类型,表示main函数的执行结果是一个整数
            return 有两个功能:
                1.结束函数的执行
                2.返回一个数据给函数的调用者
                main函数是由操作系统调用的,所以main函数的执行结果是回给操作系统的
                该执行结果反映了程序是如何结束的:
                    正数    出现异常
                    0       一切正常
                    负数    出现错误
                    可以通过echo $? 查看操作系统获取到的执行结果                 

                    printf/scanf 是标准库中的输出/输入函数,负责输出.输入
                    数据,一般用为程序测试

                转义字符:
                    键盘上一些无法直接打印的符号,会用一些特殊的字符
                    来表示,这种特殊符号就是转义字符

                    \n  换行
                    \t  制表符Tab   
                    \b  退格键
                    \a  响铃
                    \r  会回到行首
                    \\   显示一个
                    %%  显示一个

            c语言是以分号作为一行代码的结束,
            使用大括号作为划分区域
            注意:分号不能乱加,也不要出现中文格式的符号

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

            

三.代码源文件变成可执行文件的过程
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 c.o                 默认生成a.out可执行文件
gcc a.o b.o c.o -o xxx          指定生成名为xxx可执行文件

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

五.存储空间的单位:
Bit 比特 一个二进制位,只能存储0或1,计算机存储数据
的最小单位
Byte 字节 八个二进制位,计算机存储数据的基本单位


六.数据类型
    1.显示社会中的数据自带类别属性
    2.对数据进行分类可以节约存储空间.提高运行效率

    c语言中数据分为两个大类:自建(程序员自己设计:结构.联合.类)
                         内建(c语言自带的)
        

        整型:
            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位整数
                注意:32位系统下signed long是四字节,64位是8字节
            unsigned 无符号
            类型                字节数      表示范围
                unsigned char     1           0~255
                unsigned short    2           0~65535
                unsigned int      4           0~40亿
                unsigned long     4/8
                unsigned long long 8          1开头的20位整数
                注意:由于定义无符号数据时名字麻烦,标准库把这些
                类型重新定义以下类型:
                    需要包含头文件<stdio.#include <stdio.h>
                    uint8_t uint16_t uint32_t uint64_t 
                    int8_t  int16_t  int32_t  int64_t
        浮点型:
            float           4
            double          8
            long double     12/16
        注意:采用科学计数法,换算真实数据与二进制数据,因此
            计算浮点型数据要比整数数据要慢的多,编程时尽量
            使用整形。
        注意:关注浮点型精度,小数点后6位有效


        模拟:          (48 == '0'   'A' == 65  'a' == 97  '\0' == 0   )
            字符型:%c
            char 字符就是符号或者图案,在内存中存储的十整数,需要
            显示处符号或图案时,计算机会跟ASCII码表中的对应关系
            显示出相应的符号或图案

             布尔型:bool
             先有c语言之后才有bool类型,所以c语言十没有真正的布尔类型
             在stdbool.h 头文件用整数进行模拟
             bool true false
        
        可以使用sizeof运算符 计算类型、变量占用的字节数
        例如:sizeof(int)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值