正文

C语言笔记 12005-02-14 00:23:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/book/213.html

分享到:

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。

阅读(5390) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册