标准C语言

C语言简介:

    BCPL->newB->C->UNIX->Minix->Linux->gcc

    C语言诞生于1970-1973年,在肯·汤普逊和丹尼斯·里奇的编写下完成,归属于美国贝尔实验室.

    C语言专门为了编写操作系统而诞生的语言,所以天生适合硬件编程,以运行速度快著称,也非常适合实现数据结构与算法.

    由于C语言出现的时间过早,C语言是存在非常多缺陷,也没想到普通人也能使用C语言编程,因此就存在陷阱,但是前辈们总结了一些避免的经验(C语言的陷

    阱与缺陷).

    C语言的语法很自由,自由也意味着危险,自由源于自律.

    C89语法标准,gcc默认的语法标准   gcc默认C89

    C99语法标准,对C89标准的扩展和增强   gcc -std=gnu99

    C11语法标准,全新的升级

第一个C程序:

    #include <stdio.h>

    int main()

    {

        printf("Hello World!\n");

        return 0;

    }

    程序员所编写的代码并不是标准的C代码,需要一段程序把它翻译成标准C代码,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的代码都是预处理指令   

    #include    功能是把一个头文件导入到当前文件中

    #include <> 从系统指定的路径下加载头文件

    #include "" 先从当前路径下加载头文件,如果找不到,再从系统指定的路径下加载头文件

        操作系统是通过设置环境变量来指定加载头文件的路径

    stdio.h

        头文件:以.h结尾,里面存储的是一些辅助性代码,绝大部分是函数的声明

        源文件:以.c结尾,里面存储的是具有功能性代码

        C语言标准委员会为C语言以函数的形式提供了一些基础功能,这些函数就被封装到libc.so库文件中

        用很多头文件负责对库中的函数进行分类说明,stdio.h就是其中的一个,常用的还有stdlib.h、string.h

        stdio.h 负责对输入输出功能的函数进行说明

    函数:C语言以函数为单位来管理代码,函数是管理代码的最小单位,一个函数就是一段具有某项功能的代码段

    main函数是程序的执行入口,有且只有一个

    int 是一种数据类型,它表示main函数的执行结果是一个整数

    return 功能有两个:1、结束函数的执行 2、返回一个数据给函数的调用者

    main函数是由操作系统调用,它的返回值是给操作系统的,反映了程序是怎么样结束的,通常有三种情况:

        正数    出现异常    (他人错误)

        0       一切正常

        负数    出现错误    (自身错误)

    可以通过 echo $? 命令查看上一个程序的返回值

    printf/scanf 是标准库中的函数,负责输入、输出数据,一般用来调试代码

    printf("---------\n");

    转义字符:

        键盘上一些按键是没有符号的,只能用一些特殊的字符组合来表示,这些特殊的字符组合就是转义字符,\n就是其中一个

        \n  换行

        \b  退一个字符  \b \b退格效果

        \r  回到行首

        \t  制表符,用于对齐数据

        \a  铃响

        \\  表示一个\ 

        %%  表示一个%

    C语言以分号(;)作为一行代码的结束,使用大括号划分代码区域

编译器(gcc)

    负责把人能看得懂的记录了代码的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器

    gcc是由GNU组织为了编译Linux内核代码而开发的一款免费、开源的编译器,默认采用C89标准,-std=gnu99可以设置语法标准

        常用的参数:

            -E  显示预处理的结果

            -c  只编译不链接

            -o  设置编译结果的名字

            -I  指定头文件的加载路径

            -S  生成汇编代码

            -l  指定要使用的库文件

            -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 code.o code1.o ...  默认生成一个a.out的可执行文件

C语言的文件类型:

    .h  头文件

        .h.gch  头文件的编译结果,它会被有限使用

    .c  源文件

    .i  预处理文件

    .s  汇编文件

    .o  目标文件

    .a  静态库文件

    .so 共享库文件

数据类型

    为什么要对数据进行分类:

        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

                int8_t  int16_t  int32_t  int64_t

                uint8_t uint16_t uint32_t uint64_t

    浮点型:

        float           4

        double          8

        long double     12/6

        注意:采用科学计算法,二进制与真实数据之间需要进行换算,因此浮点型数据耗时要比整型数据多得多,编程时尽量选择整型

        一般小数点后6位有效

        time ./a.out    计算程序的运行时间

    模拟型:

        字符型char

            字符就是符号或图案,内存中存储的是整数,当需要显示成字符时会根据ASCII码表中对应的关系显示出相应的符号或图案

            '\0'    0

            '0'     48

            'A'     65

            'a'     97

        布尔型bool

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

            bool true false

变量与常量

    什么是变量:程序在运行期间数据可以变化的叫做变量,相当于存储数据的盒子

    变量的定义:

        类型 变量名;

        取名规则:

        1、由字母、数字、下划线组成

        2、不能以数字开头

        3、不能与C语言32个关键词重名

            数据类型相关:

                内建类型:void char short int long float double                                  7

                自建类型:struct union enum sizeof                                               4

                类型限定类:signed unsigned auto const static volatile register extern typedef   9

            流程控制相关:

                分支:if else switch case default                                               5

                循环:for while do                                                              3

                跳转:break continue return goto                                                4

        4、见名知意(功能、类型、范围...)

    

    变量的使用:

        赋值:   num = 100;

        参与运算:   num * 10;

    注意:变量的默认值是随机的,为了安全起见要进行初始化,一般初始化为0

    变量的输入、输出:

        int printf(const char *format, ...);

        功能:输出数据

        format:"双引号包含的格式信息(提示信息+占位符)"

        ...(可变参数) :变量列表

        返回值:输出字符的个数

        类型占位符:C语言通过类型占位符的方式来传递变量的类型

        char short int long long long 

        %hhd %hd   %d  %ld  %lld      有符号

        %hhu %hu   %u  %lu  %llu      无符号

        

        float double long double

        %f    %lf    $LF

        %c

    练习1:定义各种类型的变量并初始化,使用printf来显示

    int scanf(const char *format, ...);

    功能:输入数据

    format: "双引号包含的格式信息(占位符)"

    ... :变量地址列表 &变量名

    返回值:成功输入的变量个数

    注意:scanf需要的是变量类型、变量地址

        变量地址 = &变量名

    

    练习2:定义各种类型的变量并初始化,使用scanf输入,printf输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值