C语言学习笔记(一)——认识C语言

C语言介绍

丹尼斯·里奇和肯·汤普森于1971~1973在贝尔实验室,开发UNIX操作系统时,以BCPL(Basic Combined Programming Language)语言为基础研发的一款高级编程语言,它是为了编写操作系统而开发的一款编程语言,也是世界上第一款高级编程语言。

优点:语法简单,只有32个关键字,运算速度快,适合实现底层的算法,一般应用于嵌入式开发。

缺点:难以精通,有一些陷阱和缺陷,没有大型的软件公司在背后支持,可用的软件库比较少。

第一个C程序

#inclue


int main(int agrc,const char* argv[])

{

​		printf("Hello,World!\n");

​		return 0;

}

注意点:

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

  2. #include 的功能是导入一个文件,它有两种用法:

    #include < > 从系统指定的路径查找并导入头文件

    #include " " 先从当前路径下查找头文件,如果找不到再在系统指定的路径中查找并导入头文件

  3. C语言标准委员会为C语言提供了一些基础功能,这些功能以函数形式被封装在libc.so库文件中,同时还提供了一些对函数的说明文件(头文件),常用的头文件有:stdio.h stdlib.h string.h math.h。

  4. C语言中以main函数作为程序的执行入口,有且只能有一个,无论在哪里它都第一个执行。

  5. int 是一种数据类型,作为main函数的返回值的类型,这里表示返回值为整数。

  6. C语言中使用 { }大括号划分代码区域,写在大括号中的代码都属于main函数。

  7. scanf printf 是标准库中的函数,具有输入、输出的功能,一般用于调试程序。

  8. C语言中把一些不方便显示或使用的字符用一些特殊字符(转义字符)来代替:

    C语言学习笔记(一)——认识C语言_第1张图片

  9. C语言使用 “ ; ” 分号作为一行代码结束的标志,因此过长的代码可以换行书写,只要不加分号就行。

  10. return 语句可以结束函数的执行,main函数中的return可以结束整个进程,并返回一个数据给函数的调用者(操作系统),用来告诉操作系统程序的结束状态。

                结束状态:

                正值:程序执行过程中出现异常(不跟程序有关)

                0 :表示一切正常

                负值:程序执行过程中发现错误(与程序有关)

        echo $? 可以查看程序的结束状态

编译器和GCC

编译器:它负责翻译一个程序,它可以把人类能看懂的代码翻译成计算机能看懂的二进制指令,它是预处理器、编译器、链接器等的集合。

GCC是GNU组织为了编译Linux内核代码而为C语言开发的一款开源编译器。

编译器把C代码编译成可执行程序的过程:

  1. 把程序员所编写的C代码翻译成标准的C代码

    gcc -E hello.c 把预处理结果显示在屏幕上

    gcc -E hello.c -o hello.i 把预处理的结果输出到文件中

  2. 把预处理的结果翻译成汇编代码

    gcc -S hello.i 会生成以.s结尾的汇编文件

  3. 把汇编代码翻译成二进制指令

    gcc -c hello.s 会生成以.o结尾的目标文件

  4. 把若干个目标文件合并成可执行文件

    gcc a.o b.o c.o ... 默认会生成一个a.out 的可执行文件,可以使用 -o指定可执行文件的名字。

注意点:gcc hello.c 包含了以上者四个步骤,通过 ./a.out 执行可执行文件,也可以用gcc hello.c && ./a.out 编译并执行。

gcc编译器常用的参数:

-E 预处理
-S 生成汇编代码
-c 生成目标文件
-o 指定输出文件名
-I(大写的i) 指定头文件的路径
-l 指定库名,例如:sqrt、pow 需要额外链接数学库 -lm
-L 指定库文件的路径
-D 编译时定义宏
-g 编译时添加调试信息,这样编译出的可执行文件可以用JDB调试
-Wall 显示所有警告信息
-Werror 把警告当错误处理,并且如果编译时有错误则不产生可执行文件
-std 指定编译器遵循的语法标准,如:c89,c99,c11  ,当前系统默认为c89 std=gnu99

C语言的文件类型

.h 头文件
.c 源文件
.i 预处理文件
.o 目标文件
.s 汇编文件
.gch 头文件的编译结果,一般不使用,建议立即删除
.a 静态库文件
.so 动态库文件

你可能感兴趣的:(C语言,c语言,开发语言)