C Primer Plus(二)
第二章C语言概述
2.1C语言的一个简单实例
- #include<stdio.h>
- int main(void)
- {
- int num=1;
- num=1;
- printf("I am a simple computer.\n");
- printf("My favorite number is %d because it is first.\n",num);
- return 0;
- }
1:改行告诉编译器包含文件stdio.h中的全部信息。
2.圆括号表明main()是一个函数的名字,int表示函数返回一个整数,void表示函数不接受任何参数。
3.函数体的开始。
4.声明语句。
5.赋值语句。
6.函数调用语句,并把光标移到下一行的开始。
7.使用printf()把num的值内嵌在用引号引起来的词组中进行输出。
8.返回语句。
9.函数结束。
2.2实例说明
一、#icnlude指示和头文件
#include<stdio.h>相当于您在文件中该行所在的位置键入了文件stdio.h的完整内容。实际上它是一种剪切和粘贴操作,方便多个程序间共享公用的信息。
#include语句是C的预处理指令。预处理:编译前对源代码做一些准备工作。#符号表明这一行是在编译器接手之前由C预处理器处理的语句。
在C世界中,人们称出现在文件顶部的信息集合为头。函数的实际代码并不在头文件中,而是在库函数中。头文件指引编译器把您的程序正确地组合在一起。
二、main()函数
一个C程序总是从被称为main()的函数开始执行。()指明main()是一个函数,int表明返回类型,返回给操作系统。圆括号包括传递给函数的信息。
三、注释
包含在/* */之间的部分是程序注释,C语言的注释的一个好处就是可以被放在任何的地方,一个较长的注释甚至可以分为多行。
C99新增的一种注释写法,//这种注释必须被限制在一行内。
四、花括号,程序体和代码块
花括号划定了函数的界限。
五、声明
声明语句为变量指定一个名字并指明该变量中存储的数据类型。
分号是语句的一部分,不是两句之间的间隔符。关键字是用来表达语言的单词,您不能将它们用于其它的目的。在C语言中,所有变量都必须在使用之前定义。
C语言命名规则:小写字母,大写字母,数字和下划线_。第一个字符必须是字母或者下划线。
OS和C库通常以一个或两个下划线开始的名字,因此避免这样的命名。
C语言的名字是区分大小写的。
声明变量的四点好处
- 将所有变量放在一起,可以让读者更容易掌握程序的内容。
- 编写程序之前,考虑一下需要声明的变量会促使您做一些计划工作。
- 可以帮助避免程序中出现一类很难发现的细微错误。
- 不声明,C语言将无法执行。
- 可以帮助避免程序中出现一类很难发现的细微错误。
- 编写程序之前,考虑一下需要声明的变量会促使您做一些计划工作。
六、赋值
语句赋值的顺序是从右到左,该语句也用分号结束。
七、printf()函数
程序运行到这一行时,控制权将转给该函数。当函数完成了它所要做的工作,控制权将返回给原来的函数。
\n是一个转义符,转义字符通常用于代表难于表达的或是无法键入的字符。
%d是一个占位符,其作用是指出输出num值的位置。%告诉程序在这个位置输出,d告诉程序将输出一个十进制整数变量。
八、Return语句
return语句是程序的最后一个语句,返回函数所指定类型的值。
2.3一个简单程序的结构
程序由一个或多个函数组成,其中必须有main()函数。函数的描述由函数头和函数体组成,函数头包括预处理语句和函数名。函数头包括预处理语句和函数名,函数体位于花括号中并由一系列语句组成,每个语句以一个分号结束。
2.4使程序可读的技巧
选择有意义的变量名和使用注释,使用空行分隔一个函数的概念上的多个部分。
2.5多个函数
#include<stdio.h>
void butler(void);
int main(void)
{
butler();
return 0;
}
void butler(void)
{
printf("You rang,sir?\n");
}
butler()函数第一次出现在原型中,C90标准添加了原型,原型是一种声明的形式,用于告诉编译器您正在用一个特殊的函数。它也指明了函数的属性。
butler()函数的执行时间由main()函数调用它的位置决定,而不是由其在文件中定义的位置决定的。
2.6调试
编译器一个常见毛病是发现的错误位置比真正的错误要滞后一行。
2.7关键字和保留标识符
关键字是C语言的词汇,关键字不能用作标识符,否则会作为语法错误。