C Primer Plus (第五版)中文版——第 2 章 C 语言概述

本文通过一个简单的C语言程序实例,详细介绍了C语言的基本结构,包括预处理指令、函数定义、变量声明、赋值语句、printf函数的使用以及return语句的作用。同时,文章还探讨了如何提高代码的可读性,以及调试程序中可能出现的语法和语义错误。

2.1  C 语言的一个简单实例

#include <stdio.h>
int main(void)               /*一个简单的C程序*/
{
	int year;            /*声明一个名为year的变量*/
	year = 2018;         /*赋值为2018*/

	printf("%d,Hello Wolrd!\n", year);	/*使用printf()函数*/
	return 0;
}

2.2  实例说明

一、#include 指示和头文件

#include <stdio.h>

这是程序的第一行。该语句的作用相当于您在该文件中该行所在的位置键入了文件 stdio.h 的完整内容。#include 语句是 C 预处理指令(preprocessor directive)的一个例子。C 编译器在编译之前要对源代码做一些准备工作,称为预处理(preprocessing)。

stdio.h 文件作为所有 C 编译包的一部分提供,它包含了有关输入和输出函数的信息供编译器使用。这个名字代表标准输入输出头文件(standard input/output header)。

二、main() 函数

int main(void)	

这行代码声明了一个 main 函数。一个C程序总是从 main() 函数开始执行的。int 指明了 main() 函数的返回类型;圆括号表明 main() 是一个函数的名字;圆括号内一般包含传递给函数的信息;void 表示 main() 函数不接受任何参数。

三、注释

/*一个简单的C程序*/

包含在/*和*/之间的部分是程序注释。在/*和*/之间的所有内容都会被编译器忽略掉。较长的注释可以单放一行,或者是多行。C99增加了另一种风格的注释:

//这种注释必须被限制在一行内,一行的结尾标志注释的结束

四、花括号、程序体和代码块

{
    ...
}

花括号划定了 main() 函数的界限。通常,所有的 C 函数都是用花括号来表示函数体的开始和结束。花括号还可以用来把函数中的语句聚集到一个单元或代码块中。

五、声明

int year;

程序中这一行叫做声明语句。该语句声明一个名为 year 的变量,且该变量是 int 类型。 单词 int 是 C 语言的一个关键字,它代表 C 中最基本的一个数据类型。单词 year 是一个标识符(identifier),即您为一个变量、函数或其他实体所选的名字。

1.数据类型

C 语言可以处理多种数据类型。把一个变量声明为整数类型或字符类型是计算机正确地存储、获取和解释该数据的基本前提。

2.名字的选择

C 语言规定,合法的标识符必须由英文字母或下划线开头,是字母、数字和下划线的序列,且有长度限制。C 语言标识符分为三类:关键字、保留标识符、用户标识符。关键字是 C 语言中的词汇,如 int、void 等。保留标识符包括那些以下划线字符开始的标识符和标准库函数的名字,如 printf。

  • 变量名应尽量有意义,如果名字不能表达清楚,可以用注释解释变量所代表的意思
  • 不能是关键字,一般不使用保留标识符
  • 一般小写

3.声明变量的四点好处

  • 把所有变量放在一起,可以让读者更容易掌握程序的内容
  • 开始编写程序前,考虑一下需要声明的变量会促使您做一些计划工作
  • 可以帮助避免程序中出现"变量名拼写错误类"的问题
  • 如果没有声明变量就使用,将不能编译您的C程序

六、赋值

year = 2018;

将2018赋给变量 year。前面的声明语句在计算机内存中为变量 year 分配了空间,该赋值语句在此空间中为变量存储了一个值。

七、printf() 函数

圆括号表明 printf 是一个函数名。圆括号中的内容是从函数 main() 传递到函数 printf() 的信息,这样的信息被称为参数,更完整的名称是函数的实际参数。

printf("%d,Hello Wolrd!\n",year);

%d是一个占位符,其作用是指示输出 year 值的位置。% 告诉程序把一个变量在这个位置输出,d 告诉程序将输出一个十进制整数变量。

八、return 语句

return 0;

return 语句是程序的最后一个语句。在 int main(void) 中 int 表示 main() 函数的返回值应该是一个整数。C 标准要求带有返回值的 C 语言函数要使用一个 return 语句,该语句包括关键字 return ,后面紧跟着要返回的值,然后是一个分号。

2.3  一个简单程序的结构

函数的描述由函数头和函数体组成。函数头包括预处理语句和函数名;函数体位于花括号{ } 中并由一系列语句组成。简而言之,一个简单的标准 C 程序应该使用下面的格式: 

#include <stdio.h>
int main(void)
{
	statements
	return 0;
}

2.4  使程序可读的技巧

  • 选择有意义的变量和使用注释
  • 使用空行分隔一个函数概念上的多个部分
  • 每个语句用一行

2.6  多个函数

#include <stdio.h>
void hello_wolrd(void);	/*函数原型*/
int main(void)
{
	printf("What to say?\n");
	hello_wolrd();  /*函数调用*/
	printf("Hello Mr.Gold\n");
	return 0;
}

void hello_wolrd(void)	/*函数定义的开始*/
{
	printf("Hello World!\n");
}

hello_wolrd() 函数在程序中出现了3次。第一次出现在函数原型中,通知编译器要用到该函数;第二次是在 main() 函数中以函数调用形式出现;最后,程序给出了函数的定义,即函数本身的源代码。

2.7  调试

程序的错误通常叫做 bugs,而发现和修正这些错误的过程叫做调试(Debugging)。

  • 语法错误:把正确的 C 符号放在了错误的位置
  • 语义错误:没有违反 C 语言的规则,但出现了意思上的错误

2.8  关键字和保留标识符

关键字是 C 语言的词汇。保留标识符包括那些以下划线字符开始的标识符和标准库函数的名字,如 printf。然而 C 语言已使用它们或保留使用它们的权利,所以如果您使用这些标识符表示其他意思就可能引起问题。

2.10  总结

  • C 程序是由一个或多个函数组成的。每个 C 程序都必须包含一个名为 main() 的函数,程序总是从 main() 函数开始执行
  • 一个简单的函数结构为:函数头后面紧跟一个开始花括号 { ,后面是构成函数体的语句,最后是起终止作用的结束花括号 }
  • 每个 C 语句都是一个针对计算机的指令。声明语句为变量指定一个名字并指明该变量中存储的数据类型。变量名是标识符的一种。赋值语句将值赋给变量。函数调用语句会导致所指定函数的执行。当被调函数执行完毕后,程序会返回到函数调用之后的语句继续执行
  • printf() 函数用于输出语句和变量的值
  • 一门语言的语法是一套规则,用于管理这种语言中的合法语句组织在一起的方式。语句的语义就是它所表达的意思。编译器可以帮助你发现语法上的错误,但是程序里的语义错误只有在编译完之后才能从程序的行为中表现出来。检查语义错误可能包括跟踪程序的状态,即程序每执行一步之后所有变量的值。  

2.12  编程练习

编程练习参考程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值