在学习本章时,由于书本内容有些部分过于冗杂和重复,所以我对内容进行了部分精简,想要减少自己以后复盘的学习时间。
本章主要介绍以下内容:
运算符:= ;
函数:main()、printf();
编写一个简单的C程序;
创建整型变量,为其赋值并在屏幕上显示其值;
换行字符;
如何在程序中写注释,创建包含多个函数的程序,发现程序的错误;
什么是关键字。
目录
2.1 程序结构
程序示例及注释讲解:
/*一个简单的C程序*/
#include<stdio.h> //包含另一个文件,告诉编译器把stdio.h中的内容包含在当前程序中
int main(void) //函数名
{ //函数体开始
int num; //声明,将使用一个int类的名为num的变量
num = 1; //赋值表达式语句
printf("I am a simple"); //调用printf()函数,在程序中使用函数叫做调用函数
printf("computer.\n); //调用另一个函数
printf("My favorite number is %d because it is first.\n",num);
return 0;
} //结束
针对上面给出的实际例子,我们可以得到组成C程序的几个部分,如下图所示:
我们可以试着在自己的IDE上面运行上面的示例代码,如果出现了程序的输出一闪而过的情况,可以在程序中添加额外的代码,让窗口等待用户按下一个键才关闭。
方法:在return语句前加一行代码: getchar();
示例程序中的注意点:
1. #include指令和头文件
#include<stdio.h>
其中,<stdio.h>的作用是把stdio.h文件中的所有内容都输入到该行所在的位置,所有的C编译器软件包都提供stdio.h文件,该文件中是标准输入/输出头文件。#include这行代码是一条C预处理指令(预处理:C编译器在编译前会对源代码做的一些准备工作)
头文件:C程序顶部的信息集合,包含了编译器创建最终可执行程序要用到的信息。在头文件中可以定义一些常量,或者指明函数名以及如何使用它们,函数的实际代码在一个预编译代码的库文件中。
2. main()函数
int main(void);
C程序一定从main()函数开始执行,除了main函数,你可以任意命名其他函数,而且main()函数必须是开始的函数。
圆括号是用于识别main()是一个函数。
int是main()函数等待返回类型,表明main()函数返回的值是整数,返回的值返回给操作系统。
函数名的圆括号中包含的是一些传入函数的信息,这里void表示没有传递任何信息。
注意:
3. 注释
(1)/* */
用于段注释,针对一行或者多行
(2)//
用于单行注释
4. 花括号、函数体和块
{
...
}
使用花括号标记函数体的开始和结束。
花括号还可以用于把函数中的多条语句合并为一个单元或块。
花括号在C语言中的作用类似于其他语言中的begin和end。
5. 声明
int num;
在C语言中,所有变量必须先声明才能使用。C语言区分名称的大小写。
6. 赋值
num = 1;
含义:将值1赋给变量num。在执行int num;声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这条语句赋值表达式语句时,把值存储在之前预留的位置。
7. printf()函数
引号中为参数,分为函数的实际参数和形式参数,实际参数是传递给函数的特定值,形式参数是函数中用于存储值的变量。
8.return语句
return 0;
表示函数返回0,如果遗漏了,程序在运行至最外面的右花括号(})会返回0。这里可以省略return语句,但是不要在其他有返回值的函数中漏掉它,建议养成main()函数中保留return语句的习惯。
从上面的示例我们可以得到程序的基本结构:
程序由一个或多个函数组成,必须有main()函数,函数由函数头和函数体组成。
函数头包含函数名、传入该函数的信息类型和函数的返回类型。
通过函数名后的圆括号可以识别出函数,圆括号内可能为空,可能有参数。函数体被花括号括起来,由一系列语句、声明组成。
2.2 程度可读性
提高程序可读性的技巧:
1. 选择有意义的函数名
2. 写注释
3. 在函数中用空行分隔概念上的多个部分
4. 每条语句各占一行(实际上C比较自由,编译器以分号作为一条语句的结束,因此可以把多条语句放一行,也可以每条语句独占一行)
2.3 包含多个函数的程序
使用多个函数的示例代码:
#include<stdio.h>
void butler(void);
int main(void)
{
printf("I will summon the butler function.\n");
butler();
printf("Yes. Bring me some tea and writeable DVDs.\n");
return 0;
}
void butler(void)
{
printf("You rang, sir?\n");
}
该程序的输出如下:
I will summon the butler function.
You rang, sir?
Yes. Bring me some tea and writeable DVDs.
2.4 程序的错误
关于程序的错误:
1. 语法错误
不遵循C语言的规则,指把有效的C符号放在错误的地方。编译器能发现语法错误。
2. 语义错误
指意思上的错误,就是如果遵循了C规则,但是结果不正确。编译器无法检测语义错误,这种错误只能自己找。
2.5 跟踪程序的状态
如何跟踪程序的状态?
1. 自己模拟计算机逐步执行程序
2. 在程序关键点插入额外的printf()语句,以监视制定变量值的变化。
3. 使用调试器(debugger),这是一种让你一步一步运行另一个程序并检查该程序变量的值的程序。
2.6 关键字和保留标识符
小结:
第二章主要讲了程序的大致框架,帮助C语言新手知道一个程序该如何下手,了解了头文件、函数、声明等等知识点,为后续介绍程序细节内容的展开奠定了基础。