C语言是一种广受欢迎且用途广泛的程序设计语言。人们使用它编写计算机程序。因为C功能强、效率高,所以全世界的程序员都喜欢用它。如果您是一名程序员,或者希望成为一名程序员的话,那么学习C语言会使您受益匪浅:
您将可以在许多平台上阅读和编写程序。小到微控制器,大到最先进的科研系统,到处都是C语言的用武之地。许多现代操作系统也是用C语言编写的。
学习过C语言后,再进阶的面向对象C++语言就容易多了。C++是对C的扩展。不先掌握C语言而直接学习C++是非常困难的。
本文中,我们将会循序渐进地完整介绍C语言,并教会您怎样从零起步成为一名C程序员。一旦您掌握了C语言,您一定会对自己可以做的事情感到吃惊的!
C是一种计算机编程语言。就是说可以用C编写指令清单交给计算机去执行。C是当前正在使用的成千上万种编程语言之一。它已经有几十年的历史了。因为它功能强大而且效率很高,所以受到了程序员们广泛的欢迎。C还是一种容易学习的语言。和其他一些语言相比,C的风格稍有点古怪,但您会很快适应的。

HSW
C语言编译器
C 是所谓的编译型语言,意思是说您写好的源程序必须通过C编译器来运行,使它变成可以在计算机上运行(执行)的可执行文件C源程序是供人阅读的,而编译器产生的可执行程序是供计算机读入和执行的。也就是说,要编写并运行一个C程序,您必须借助于C编译器。如果使用UNIX系统(例如,您在UNIX主机上用C编写CGI脚本,或者您是学生,在实验室的UNIX机器上工作),C编译器是免费提供的。它的名字是cc网络不稳定或者gcc,可以通过命令行调用。您如果是学生,那么学校很可能会向您提供编译器。您只要查一下学校提供什么样的编译器并学习使用即可。如果您是在家使用Windows操作系统的计算机,则需要下载免费的C编译器或是购买商业的C编译器。微软公司的Visual C++是一套广泛使用的商业编译环境,可以编译CC++程序。可惜这套软件要花费几百美元。如果不想花那么多钱购买商业编译器的话,那么您可以在网上挑选一款免费的编译器。如果您想的话,不妨从delorie/djgpp/开始吧。
我们会从一个极其简单的C语言程序为例开始,循序渐进。在这个例子中,我假定您使用的是怎么才能赚钱UNIX命令行,并以gcc作为您的开发环境。如果您使用的并不是这些,所有的代码依然可以正常运行——您只是需要使用其他可用的编译器,才能理解这些代码。
让我们开始吧!
让我们从一个最简单的C程序开始,了解一下C的基本要素和编译过程。将下面的程序录入一个标准的文本编辑器(UNIX上用viemacsWindows上用NotepadMacintosh上用TeachText),然后以samp.c的文件名保存。文件名如果没有.c结尾,编译的时候就很可能会出现一些错误,所以要确保文件名以.c结尾。另外,请确保您的编辑器不会自动在文件名末尾添加后缀(如.txt)。下面是我们的第一个程序:
#include

int main()
{
printf(" 这是我第一个程序的输出!\n");
return 0;
}
执行时,程序使计算机输出“这是我第一个程序的输出!”,之后便退出了。真是简单到不能再简单了!
书写位置
录入本程序时,注意将#include中的“#”放在第一列,即最左侧。其他行的间距和缩进可随个人喜好选择。某些UNIX系统上有一个叫cbC程序美化器,它可以为美化代码格式。上例程序代码的空格和缩进风格可作为格式的范例。
请按下面步骤编译本程序:
UNIX 系统上,键入gcc samp.c -o samp(若gcc不能用就用cc)。此命令行的作用是调用名为gccC编译器来编译samp.c,并将生成的可执行文件命名为samp。要运行编译好的程序,请键入samp(有些 UNIX 系统上要键入./samp)。
在使用在使用DJGPPDOSWindows电脑上,请在MS-DOS命令中键入gcc samp.c -。这条命令会调用名叫gccC编译器,使它编译samp.c,并生成一个可执行文件。要运行程序,只需键入samp
如果您使用的是其他编译器或其他开发系统,阅读并遵循该编译器的指南。
当您运行这个程序后,您应该会看到“这是我第一个程序的输出!”的打印了。当您编译这个程序时,到底发生了什么?下面是示意图:

HSW
C语言编译器
如果您键入程序时打错了,它要么不会编译,要么不会运行。如果程序没有编译,或者没有正确地运行,请重新编辑,检查输入的时候是否有误。然后修正错误,重新编译。
让我们逐行讲解一下这个示例程序,看看每一行都做了什么(点击这里在新窗口中打开程序):
程序以#include 开始。这一行将“标准输入输出库(Standard I/O library)”包括进程序之中。使用标准输入输出库您可以完成诸如从键盘(称为“标准输入”)读入数据、向屏幕(称为“标准输出”)写出数据、处理磁盘上的文本文件之类的工作。这是一个极有用的函数库。C拥有大量像stdio一样的函数库,包括字符串、时间和数学函数库等。函数库就是一个别人写好供我们调用的代码包,它使我们编程变得更加容易(我们在后面讨论函数库)。
int main()这行声明了主函数。所有的C程序都必须包含一个名为main的函数。我们稍后将学习更多关于函数的知识。程序从主函数的第一行开始运行。
C语言使用花括号({ })标识一个代码块的开始和结束。本例中构成主函数的代码块包括两行。
printf语句将输出的内容送往标准输出设备(对我们而言就是屏幕)。引号中的部分叫做格式字符串,用于表示数据输出时的格式。格式字符串可以包含文字(“这是我第一个程序的输出!”)、回车换行符(n)和标识变量位置的操作符等。如果您使用的是UNIX系统,可以键入man 3 printf获得printf函数的完整说明文档。其他系统下您可以通过阅读编译器相关的文档来了解printf函数的细节。
return 0;这行使主函数向运行它的命令行解释器返回错误代码0(表示没有错误)。稍后我们还会继续介绍这一特性。
作为程序员,您的程序常常需要“记住”某个数值。比如您的程序要求用户输入一个数,或者它计算出了一个结果,您需要把它保存在某处供以后使用。程序是靠使用变量来保存结果的。例如:
int b;
上面这行的意思是说:“我想创建一个可以容纳一个整数的存储空间,名字叫做b。”每个变量都有名字(本例中是b)和类型(本例中是int,表示整型)。您可以用如下语句在b中存储一个值:
b=5;
您可以用如下语句使用 b 中保存的值:
printf("%d", b);
C 语言提供了几种标准的变量类型:
int - 整型,用于保存整数值
float - 用于保存浮点值
char - 用于保存单个字符值,如“m”或“Z
后面我们会看到整型以外其他类型的例子。
 
printf语句将要输出的内容送往标准输出设备。对我们而言,标准输出设备一般就是计算机屏幕(虽然您也可以将标准输出重定向到一个文本文件或另一个命令)。
下面这个程序将有助于您深入理解printf
#include

int main()
{
int a, b, c;
a=5;
b=7;
c=a+b;演员王维维
printf("%d+%d=%d\n", a, b, c);
return 0;
}
请录入程序并保存,文件名是add.c。在命令行键入gcc add.c -o add进行编译,之后再键入add(或./add)运行程序。您会看到输出:“5+7=12”。
下面是该程序各行的解释:
int a, b, c; 这行声明了三个分别名为abc的整型变量。整型变量用于保存整数。
下一行将变量a的值初始化为5
再下一行将变量b的值初始化为7
再下一行将ab相加,并将结果“赋值”给c
计算机将a中的值(5) b中的值(7) 相加得到结果12,并把新值(12) 存入变量c。变量c被赋值12。因此,本行中的=称为“赋值运算符”。
如何填报志愿 接下来printf语句会打印“5+7=12”。占位符%d的作用是为输出值占位。本行有三个%d占位符,末尾有三个变量名:abcC语言将第一个%da匹配并替换为5;将第二个%db匹配并替换为7;将第三个%dc匹配并替换为12。然后在屏幕上打印替换结果:“5+7=12”。+=及空格作为格式字符串的一部分,按程序员指定的顺序自动插入到%d运算符之间。
前面的程序很好,但要是如果能从用户那里读入值57而不是使用固定的值的话,那就更好了。可以改为下面的程序:
#include 清明扫墓作文300字三年级

int main()
{
    int a, b, c;
    printf("输入第一个值:");
    scanf("%d",
    printf("输入第二个值:");
    scanf("%d",
    c = a + b;
    printf("%d + %d = %d\n", a, b, c);
    return 0;
}
以下是程序的执行过程:

HSW
C语言执行程序示例
请按照上例修改原来的程序,然后重新编译和执行并确保它能正常工作。注意scanfprintf都要使用格式字符串(可以键入man scanf获取更多信息)。还要注意ab前面都有一个“&”。这是C语言中的取地址运算符,它会返回变数的地址(在我们讨论指针之前,这个符号没什么用)。在对单个字符,整数,或者浮点数形式的任何变量做标准输入,以及对结构形式(我们很快就会接触到)的任何变量做标准输入时,您都必须使用&运算符。
如果您遗漏了&运算符,您在运行程序时会报错。您可以试试,这样就能看到这种运行错误是什么样子。
让我们通过一些变量来完全理解printf。这是最简单的printf声明:
printf("您好");
它的格式字符串告诉printf把“您好”二字发送到标准输出。对比:
printf("您好\n");
两者的区别是后者在“您好”后跟一个回车换行,一起送到标准输出。张艺兴遭排挤
下面这行显示了如何使用printf输出一个变量的值。
printf("%d", b)
%d是占位符,会在printf语句执行时替换为变量b的值。通常您需要把输出值嵌入到一些文字之中。一种方法是这样:
printf("温度是");
printf("%d", b);
printf(" \n");
更简单的方法是这样写:
printf("温度是 %d \n", b);