谭浩强C语身教程第一章---C言语概述(1)

 

1       C言语概述

1.1    C言语的开展历程

    C言语是在 70 年月初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实施室正式发表了C言语。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。日常伟大简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有界说一个无缺的标准C 言语,后情由美国国度标准协会(American National Standards Institute)在此根底根本上制定了一个C 言语标准,于一九八三年发表。日常伟大称之为ANSI C。

1.2    当代最杰出的挨次操持言语

早期的C 言语重要是用于UNIX琐细。由于C言语的富强功用和各方面的利益渐渐为人们见地,到了八十年月,C劈脸辈入其它操纵琐细,并很快在各种大、中、小和微型计较机上失落失落了遍及的使用,成为当代最杰出的挨次操持言语之一。

1.3    C言语版本

    目前最风行的C言语有以下几种:

    ·Microsoft C 或称 MS C

    ·Borland Turbo C 或称 Turbo C

    ·AT&T C

这些C言语版本不单完成了ANSI C标准,而且在此根底根本上各自作了一些扩大,使之更加方便、完善。

1.4    C言语的特点

1·C言语精练、紧凑,使用方便、灵活。ANSI C一共只需32个关键字:

auto

break

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signed

static

sizof

struct

switch

typedef

union

unsigned

void

volatile

while

 

 

 


9种节制语句,挨次誊写自由,首要用小写字母透露体现,收缩了一切不必要的因素。

Turbo C扩大了11个关键字:

asm         _cs          _ds         _es          _ss          cdecl              far

huge       interrupt  near        pascal

寄望:在C言语中,关键字都是小写的。

2·运算符丰厚。共有34种。C把括号、赋值、逗号等都作为运算符处置责罚。从而使C的运算模范模范极为丰厚,可以完成其他初级言语难以完成的运算。

3·数据结构模范模范丰厚。

4·具有结构化的节制语句。

5·语法限制不太严肃,挨次操持自由度大。

6·C言语批准间接访谒物理所在,能住手位(bit)操纵,能完成汇编言语的大局部功用,可以间接对硬件住手操纵。因而有人把它称为中级言语。

7·生成目的代码质量高,挨次执行效用高。

8·与汇编言语对照,用C言语写的挨次可移植性好。

但是,C言语对挨次员要求也高,挨次员用C写挨次会感到限制少、灵活性大,功用强,但较其他初级言语在进修上要坚苦一些。

1.5    面向对象的挨次操持言语

    在C的根底根本上,一九八三年又由贝尔实施室的Bjarne Strou-strup推出了C 。 C 进一步扩大和完善了C言语,成为一种面向对象的挨次操持言语。C 目前风行的最新版本是Borland C , Symantec C 和Microsoft VisualC 。

    C 提出了一些更为深化的不雅见地,它所支撑的这些面向对象的不雅见地容易将成就空间间接地映射到挨次空间,为挨次员供给了一种与传统结构挨次操持不同的思维方式和编程要领。因而也增加了整个言语的巨大性,把握起来有必定难度。

1.6    C和C++

    但是,C是C 的根底根本,C 言语和C言语在许多方面是兼容的。因而,把握了C言语,再进一步进修C 就能以一种熟谙的语法来进修面向对象的言语,从而到达事半功倍的目的。

1.7    大略的C挨次引见

    为了声明C言语源挨次结构的特点,先看以下几个挨次。这几个挨次由简到难,显示了C言语源挨次在组成结构上的特点。固然有关内容还未引见,但可从这些例子中见地到组成一个C源挨次的根本局部和誊写格式。

【例1.1】

main()

{

  printf("世界,您好!\n");

}

l         main是主函数的函数名,透露体现这是一个主函数。

l         每一个C源挨次都必须有,且只能有一个主函数(main函数)。

l         函数挪用语句,printf函数的功用是把要输出的内容送到显示器去显示。

l         printf函数是一个由琐细界说的标准函数,可在挨次中间接挪用。

【例1.2】

#include<math.h>

#include<stdio.h>

main()

{

  double x,s;

  printf("input number:\n");

  scanf("%lf",&x);

  s=sin(x);

  printf("sine of %lf is %lf\n",x,s);

 }

l         include称为文件包括命令

l         扩展名为.h的文件称为头文件

l         界说两个实数变量,以被背面挨次使用

l         显示提醒信息

l         从键盘取得一个实数x

l         求x的正弦,并把它赋给变量s

l         显示挨次运算功用

l         main函数终了

    挨次的功用是从键盘输出一个数x,求x的正弦值,然后输出功用。在main()之前的两行称为预处置责罚命令(详见背面)。预处置责罚命令还有其它几种,这里的include 称为文件包括命令,其意义是把尖括号<>或引号""内指定的文件包括到本挨次来,成为本挨次的一局部。被包括的文件日常伟大是由琐细供给的,其扩展名为.h。因而也称为头文件或首部文件。C言语的头文件中包括了各个标准库函数的函数原型。因而,日常伟大在挨次中挪用一个库函数时,都必须包括该函数原型所在的头文件。在本例中,使用了三个库函数:输出函数scanf,正弦函数sin,输出函数printf。sin函数是数学函数,其头文件为math.h文件,因而在挨次的主函数前用include命令包括了math.h。scanf和printf是标准输出输出函数,其头文件为stdio.h,在主函数前也用include命令包括了stdio.h文件。

    需要声明的是,C言语划定例则对scanf和printf这两个函数可以省去对其头文件的包括命令。以是在本例中也可以删去第二行的包括命令#include<stdio.h>。

    异样,在例1.1中使用了printf函数,也省略了包括命令。

    在例题中的主函数体中又分为两局部,一局部为声明局部,另一部为分执行局部。声明是指变量的模范模范声明。例题1.1中未使用任何变量,因而无声明局部。C言语划定例则,源挨次中全数用到的变量都必须先声明,后使用,否则将会失落足。这一点是编译型初级挨次操持言语的一个特点,与讲明型的BASIC言语是不同的。声明局部是C源挨次结构中很重要的组成局部。本例中使用了两个变量x,s,用来透露体现输出的自变量和sin函数值。由于sin函数要求这两个量必须是双精度浮点型,故用模范模范声明符double来声明这两个变量。声明局部后的四行为执行局部或称为执行语句局部,用以完成挨次的功用。执行局部的第一行是输出语句,挪用printf函数在显示器上输出提醒字符串,请操纵人员输出自变量x的值。第二行为输出语句,挪用scanf函数,接受键盘上输出的数并存入变量x中。第三行是挪用sin函数并把函数值送到变量s中。第四行是用printf 函数输出变量s的值,即x的正弦值。挨次终了。

    运转本挨次时,首先在显示器屏幕上给出提醒串input number,这是由执行局部的第一行完成的。用户在提醒下从键盘上键入某一数,如5,按下回车键,接着在屏幕上给出计较功用。

1.8    输出和输出函数

在前两个例子顶用到了输出和输出函数scanf和 printf,在以后要仔细引见。这里我们先大略引见一下它们的格式,以便下面使用。

    scanf和 printf这两个函数鉴别称为格式输出函数和格式输出函数。其意义是按指定的格式输出输出值。因而,这两个函数在括号中的参数表都由以下两局部组成:

    “格式节制串”,参数表

    格式节制串是一个字符串,必须用双引号括起来,它透露体现了输出输出量的数据模范模范。各种模范模范的格式透露体现法可参阅第三章。在printf函数中还可以在格式节制串内呈现非格式节制字符,这时在显示屏幕上将原文照印。参数表中给出了输出或输出的量。当有多个量时,用

逗号隔断。好比:

    printf("sine of %lf is %lf\n",x,s);

个中%lf为格式字符,透露体现按双精度浮点数处置责罚。它在格式串中两次现,对应了x和s两个变量。其它字符为非格式字符则照原样输出在屏幕上。

【例1.3】

int max(int a,int b);            /*函数声明*/

main()                      /*主函数*/

{

  int x,y,z;                  /*变量声明*/

int max(int a,int b);            /*函数声明*/

  printf("input two numbers:\n");

scanf("%d%d",&x,&y);       /*输出x,y值*/

  z=max(x,y);                /*挪用max函数*/

  printf("maxmum=%d",z);     /*输出*/

 }

int max(int a,int b)             /*界说max函数*/

{

  if(a>b)return a;else return b;   /*把功用前往主调函数*/

 }

下面例中挨次的功用是由用户输出两个整数,挨次执行后输出个中较大的数。本挨次由两个函数组成,主函数和max 函数。函数之间是并列干系。可从主函数中挪用其它函数。max 函数的功用是对照两个数,然后把较大的数前往给主函数。max 函数是一个用户自界说函数。因而在主函数中要给作声明(挨次第三行)。可见,在挨次的声明局部中,不单可以有变量声明,还可以有函数声明。关于函数的仔细内容将在以后第五章引见。在挨次的每行后用/*和*/括起来的内容为讲明局部,挨次不执行讲明局部。

    上例中挨次的执行历程是,首先在屏幕上显示提醒串,请用户输出两个数,回车后由scanf函数语句接收这两个数送入变量x,y中,然后挪用max函数,并把x,y 的值传送给max函数的参数a,b。在max函数中对照a,b的大小,把大者前往给主函数的变量z,最初在屏幕上输出z的值。

1.9    C源挨次的结构特点

    1.一个C言语源挨次可以由一个或多个源文件组成。

    2.每个源文件可由一个或多个函数组成。

    3.一个源挨次岂论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

    4.源挨次中可以有预处置责罚命令(include 命令仅为个中的一种),预处置责罚命令日常伟大应放在源文件或源挨次的最初面。

    5.每一个声明,每一个语句都必须以分号扫尾。但预处置责罚命令,函数头和花括号“}”之后不能加分号。

    6.标识符,关键字之间必须至少加一个空格以示隔断。若已有鲜明的隔断符,也可不再加空格来隔断。

1.10       誊写挨次时应依照的划定例则

    从誊写了了,便于阅读,理解,维护的角度开航,在誊写挨次时应依照以下划定例则:

    1.一个声明或一个语句占一行。

    2.用{} 括起来的局部,日常伟大透露体现了挨次的某一条理结构。{}浅显与该结构语句的第一个字母对齐,并零丁占一行。

    3.低一条理的语句或声明可比高一条理的语句或声明缩进多少格后誊写。以便看起来更加了了,增加挨次的可读性。

    在编程时应力求依照这些划定例则,以养成杰出的编程气势派头。

1.11       C言语的字符集

    字符是组成言语的最根本的元素。C言语字符集由字母,数字,空格,标点和出格字符组成。在字符常量,字符串常量和讲明中还可以使用汉字或其它可透露体现的图形符号。

    1.字母

       小写字母a~z共26个

       大写字母A~Z共26个

    2.数字

       0~9共10个

    3.空缺符

       空格符、制表符、换行符等统称为空缺符。空缺符只在字符常量和字符串常量中起熏染。在其它中间呈现时,只起隔断熏染,编译挨次对它们纰漏不计。因而在挨次中使用空缺符与否,对挨次的编译不迸发影响,但在挨次中安妥的中间使用空缺符将增加挨次的了了性和可读性。

    4.标点和出格字符

1.12       C言语词汇

    在C言语中使用的词汇分为六类:标识符,关键字,运算符,分开符,常量,讲明符等。

    1.标识符

    在挨次中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由琐细界说外,其它都由用户自界说。C 划定例则,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,而且其第一个字符必须是字母或下划线。

    以下标识符是合法的:

       a, x,  x3, BOOK_1, sum5

    以下标识符是合法的:

    3s      以数字扫尾

    s*T     呈现合法字符*

    -3x     以减号扫尾

    bowy-1  呈现合法字符-(减号)

    在使用标识符时还必须寄望以下几点:

    (1)标准C不限制标识符的长度,但它受各种版本的C 言语编译琐细限制,同时也遭到具体机器的限制。好比在某版本C 中划定例则标识符前八位有用,当两个标识符前八位相反时,则被以为是统一个标识符。

    (2)在标识符中,大小写是有区其它。好比BOOK和book 是两个不同的标识符。

    (3)标识符固然可由挨次员随意界说,但标识符是用于标识某个量的符号。因而,命名应只管有响应的意义,以便于阅读理解,作到“望文生义”。

    2.关键字

    关键字是由C言语划定例则的具有特定意义的字符串,日常伟大也称为留存字。用户界说的标识符不该与关键字相反。C言语的关键字分为以下几类:

    (1)模范模范声明符

    用于界说、声明变量、函数或其它数据结构的模范模范。如后面例题顶用到的int,double等

    (2)语句界说符

    用于透露体现一个语句的功用。如例1.3顶用到的if else即是条件语句的语句界说符。

    (3)预处置责罚命令字

    用于透露体现一个预处置责罚命令。如后面各例顶用到的include。

    3.运算符

    C言语中含有相当丰厚的运算符。运算符与变量,函数一同组成表达式,透露体现各种运算功用。运算符由一个或多个字符组成。

    4.分开符

    在C言语中采用的分开符有逗号和空格两种。逗号首要用在模范模范声明和函数参数表中,分开各个变量。空格多用于语句各单词之间,作隔断符。在关键字,标识符之间必需要有一个以上的空格符作隔断,否则将会呈现语法错误,好比把int a;写成 inta;C编译器会把inta

当成一个标识符处置责罚,其功用必定失落足。

    5.常量

    C 言语中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。在背面章节中将专门赐与引见。

    6.讲明符

C 言语的讲明符因而“/*”扫尾并以“*/”扫尾的串。在“/*”和“*/”之间的即为讲明。挨次编译时,不对讲明作任那儿置责罚。讲明可出目前途序中的任何职位。讲明用来向用户提醒或讲明挨次的意义。在调试挨次中对暂不使用的语句也可用讲明符括起来,使翻译跳过不作处置责罚,待调试终了后再去失落讲明符。



版权声明: 原创作品,批准转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。否则将究查法律责任。

posted @ 2011-03-07 20:40  蓝色的天空III  阅读(254)  评论(0编辑  收藏  举报