C语言简介:
    BCPL->New B->C->UNIX->Minix->Linux->gcc
    C语言诞生于1971~1973年,美国贝尔实验室,肯.汤普逊和丹尼斯.里奇
    C语言是专门为了编写操作系统而诞生的语言,天生适合对硬件编程,以运行速度快而著称,而且C语言非常适合编写数据结构和算法
    因为C语言出现时间太早,所以有很多缺陷,因为没有想到普通人也可以编程,但是很多前辈总结避免这些缺陷或陷阱的经验
    《C语言三剑客》-》《C陷阱与缺陷》《C与指针》
    《C程序设计语言》
    C语言的语法非常自由,自由意味着危险,自由源于自律
    C89语法标准,旧的系统中的默认标准
    C99语法标准,对C语言的扩展和增强 -std=gnu99
    C11语法标准,全新的升级
C语言第一个程序:
    #include <stdio.h>
    程序员所编写的代码都不是标准的C代码,需要一段程序翻译成标准C代码,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的语句叫做预处理指令,以#开头的语句都是预处理指令
        #include 的功能是把一个头文件导入(拷贝)到当前位置
            #include <xxx.h>
                从系统指定的路径下查找并加载头文件
            #include "xxx.h"
                先从当前工作路径查找,如果找不到再从系统指定的路径查找并加载
    stdio.h
        头文件:以.h结尾,里面存储的是一些辅助性的代码,绝大多数都是函数的声明
        源文件:以.c结尾,里面存储的是实际的功能性的代码
        C语言标准委员会为C语言以函数形式提供的一些基础功能,这些函数都被封装在libc.so
        然后通过很多的头文件对不同功能的标准库函数进行了说明,stdio.h就是其中之一,常用:stdlib.h string.h
    int main()
        C语言中函数是管理代码的最小单位,一个函数就是一个功能的实现
        main函数是程序的入口,有且只有一个
        int 是一种数据类型,表示main函数的执行结果是一个整数值
        return 的作用:
            1、返回一个执行结果给函数的调用者
                正数    出现异常(别人导致)
                0       一切正常
                负数    出现错误(自己导致)
            2、提前结束函数
                main函数遇到return语句程序结束
        main函数是由操作系统调用,所以它的返回值给了操作系统,反应了程序是如何结束的
    {
        printf("Hello World!\n");
        return 0;
    }
    printf/scanf 是标准库的输出输入函数,一般用于调试代码
        printf("---------\n");
        xxxx
        printf("---------\n");
    转义字符:键盘上有一些不好直接表示的符号,通过一些特殊字符搭配来表示,这种字符搭配称为转移字符
        \n  换行
        \t  制表符,Tab键
        \a  铃响
        \b  光标后退一个字符
            printf("\b \b") 退格效果
        \r  光标回到行首
        %%  显示一个%
        \\  显示一个\
    注意:C语言是以分号作为一行代码的结束标志,使用大括号来划分代码
    注意:必须使用英文输入法
编译器:
    负责把人能看得懂的文本文件,翻译成计算机能看得懂的二进制文件,由预处理器、编译器、链接器组成
    gcc编译器是GNU社区为了编译Linux内核代码而开发一款免费的编译器,默认语法标准是C99或者C89
    常用的编译参数:
        -E      只显示预处理的结果
        -S      生成汇编文件
        -c      只编译不链接
        -o      指定编译结果的名字
        -I      指定头文件的加载路径 -I path
        -l      指定要使用的代码库 -lm导入数学库
        -Wall   尽可能多地产生警告信息
        -Werror 把警告当错误处理
        -std    设置编译语法标准 -std=gnu89/99
C代码如何从源文件变成可执行文件的过程:
    1、预处理:把源文件翻译成预处理文件
        gcc -E xxx.c    显示预处理结果到终端
        gcc -E xxx.c -o xxx.i 把预处理的结果存储到xxx.i预处理文件中
    2、编译: 把预处理文件翻译成汇编文件
        gcc -S xxx.i    生成以.s结尾的汇编文件
    3、汇编: 把汇编文件翻译成二进制的目标文件
        gcc -c xxx.s    生成以.o结尾的目标文件
    4、链接: 把若干个目标文件合并成一个可执行文件
        gcc a.o b.o c.o ... 生成a.out可执行文件
C语言中的文件类型:
    .c  源文件
    .h  头文件
    .h.gch  头文件的编译结果文件,会被优先使用
    .i  预处理文件
    .s  汇编文件
    .o  目标文件
    .so 共享库文件
    .a  静态库文件

Linux & 标准C语言学习 <DAY3>的更多相关文章

  1. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  2. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  3. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  4. C语言学习008:标准错误

    在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误 #include <stdio.h> ...

  5. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  6. 实验四 Linux系统C语言开发环境学习

    项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...

  7. 【C语言学习】《C Primer Plus》第1章 概览

    学习总结 1.C语言于1972年由贝尔实验室的Dennis Ritchie在与Ken Thompson一起设计UNIX操作系统的时候开发的.的的设计构想来源于Ken Thompson的B语言.Anyw ...

  8. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  9. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  10. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

随机推荐

  1. usbip:(二)从linux内核了解usb

    一.前言 1.首先了解一下EHCI.UHCI和OHCI. 从硬件上来说,usb 设备要想工作,除了外设本身,必须依赖于 usb host controller.一般来说,一个电脑里有一个 usb ho ...

  2. ethcat开发记录 三

    一.关于controlword的控制 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 保留 待定 暂停 故障复位 模式有关 伺服使能 快停 上电 伺服准备好    

  3. Linux软件防火墙iptables

    Netfilter组件 内核空间,集成在linux内核中 官网文档:https://netfilter.org/documentation/ 扩展各种网络服务的结构化底层框架 内核中选取五个位置放了五 ...

  4. delete、truncate、drop的区别

    delete:只删除数据,不删除结构.删除的数据存储在系统回滚段中,可以回滚.不会自动提交事务. 在InnoDB中,delete不会真的把数据删除,mysql实际上只是给删除的数据打了个标记为已删除, ...

  5. 【Hive】数据倾斜原因及解决方法汇总

    1)数据倾斜根本原因:由于数据分布不均匀,导致map端读取的数据分布不均匀(数据长尾分布),从而使得map处理的数据量差异过大. (2)解决思路:Hive是分阶段执行的,map处理数据量的差异取决于上 ...

  6. 【python】第一模块 步骤四 第一课、初始正则表达式

    第一课.初始正则表达式 一.课程介绍 1.1 课程概要 步骤介绍 正则表达式入门及应用 正则的进阶 案例 综合项目实战 二.正则表达式的基本操作(多敲代码多做练习) 2.1 什么是正则表达式 什么是正 ...

  7. upload 上传文件

    func SaveUploadedFile(file *multipart.FileHeader, dst string) error{ src, err := file.Open() if err ...

  8. mysql语句优化总结

    Sql语句优化和索引 1.Innerjoin和左连接,右连接,子查询 A.     inner join内连接也叫等值连接是,left/rightjoin是外连接. SELECT A.id,A.nam ...

  9. maya灯光导入houdini插件开发——技术文档

    如果想了解插件开发流程的话,可以参考我另外一篇文章maya灯光导入houdini插件开发 插件下载地址 接下来我将说明怎么使用这插件(因为之前写过技术文档,所以也懒得再写一份了,直接照搬上来) 1.插 ...

  10. unity shader 描边

    https://zhuanlan.zhihu.com/p/66282034   这个是将整个模型放大 在世界坐标操作 https://blog.csdn.net/ToToTofu/article/de ...