C语言笔记 by kingwei
1 概述
1.1 发展历史
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,因此也有人称它为中级语言。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类计算机上,从而形成了多种版本的C语言。
目前最流行的C语言有以下几种:
·Microsoft C 或称 MS C
·Borland Turbo C 或称 Turbo C
·AT&T C
1.2 程序结构举例
本文档中列举的代码均在Dev-C++中运行通过。
下面这个程序先重定向标准输入输出流,然后,从文件in.txt中读取数据,调用标准库函数qsort,升序排序后输出到文件out.txt。
#include <stdio.h> /* 包含头文件 */
#include <stdlib.h>
#define MAX_LENGTH 100 /* 宏定义 */
int length; /* 定义全局变量 */
int list[MAX_LENGTH];
int Comp(const void *p1, const void *p2) /* 定义函数体 */
{
int e1 = *((int *)p1); /* 定义局部变量 */
int e2 = *((int *)p2);
if (e1 > e2) /* 分支结构(if-else) */
return 1;
else if (e1 < e2)
return -1;
else
return 0; /* 向主调函数返回值 */
}
int main() /* 主函数 */
{
int i;
freopen("in.txt", "r", stdin); /* 顺序结构 */
freopen("out.txt", "w", stdout);
while (scanf("%d", &length) != EOF) /* 循环结构(while) */
{
for (i=0; i<length; i++) /* 循环(for)控制输入 */
scanf("%d", &list[i]);
qsort((void *)list, length, sizeof(int), Comp);
for (i=0; i<length; i++) /* 循环(for)控制输出 */
printf("%d ", list[i]);
printf("\n");
}
return 0; /* 进程向系统返回值 */
}
1.3 编译、连接
任何一种计算机语言都要从某种人们容易理解的形式(源代码)转化成计算机可以执行的形式(机器指令)。对于C语言程序,首先需要对源代码作预处理,预处理器(preprocessor)对预编译指令进行处理,生成的代码通常存放在一个中间文件中。然后使用编译器(compiler),将中间文件编译成为目标文件。最后经过连接器(linker),将目标模块和库进行连接,并添加启动模块,才能最终成为系统可以加载和执行的程序。
开发环境 编译(compile) 连接(link)
(工具) C源文件 --------------> 目标文件 ------------>最终文件
Windows *.c *.obj *.exe 可执行文件
(VC) *.lib 静态库文件
*.dll 动态库文件
Linux *.c *.o *.--- 可执行文件
(KDevelop) *.a 静态库文件
*.so 动态库文件
因此,将TC、VC等程序设计软件称为编译器是不恰当的,这些软件是集成了编辑、预处理、编译、连接、调试等工具的集成开发环境。以Dev-C++为例,它提供了一个窗口界面的编辑环境和一些配置选项,但内部编译器仍然是gcc/g++、内部调试工具是gdb.exe。
正文
C语言笔记 12005-02-14 00:23:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/book/213.html
阅读(5390) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论