第一章C语言概述
1.1程序实例
//first.程序
#include <stdio.h>
int main()
{
int num;
num = 1;
printf("I am a simple ");
printf("computer.\n");
printf("My favorate number is %d, because it is first.\n",num);
return 0;
}
2.2实例说明
1.快速简介
#include <stdio.h> <——包含另一个文件
该行告诉编译器包含文件 stdio.h 中的全部信息。文件 stdio.h 是所有C语言编译包的一个标准部分。这个文件对关键字输入和显示输出提供支持。
int main(void) <----函数名
圆括号表示mian()是一个函数的名字。int表示mian()函数返回一个整数,而void表示main()函数不接受任何参数。
2.第二遍 程序细节
这是程序的第一行。该语句的作用相当于宁在文件中该行所在的位置键入了文件 stdio.h 的完整内容。实际上,它是一种剪切和粘贴操作,这样可以方便地在多个程序间共享共用的信息。
#include语句是C预处理器指令的一个例子。
stdio.h文件作为所有C编译包的一部分提供,它包含了有关是关输入和输出函数的信息以供编译器使用。这个名字代表标准输入输出头文件(standard input/output header)。出现在文件顶部的信息集合为头,C实现通常都带有许多头文件。
最重要的是头文件包括了建立最终的可执行程序时编译器需要用到的信息。例如,他们可以定义常量,或者说明函数名以及该函数如何使用。但是函数的实际代码被包含在一个预编译代码的库文件中,而不是在头文件中。编译器的连接部分负责找到所需要的库代码。头文件指引编译器把您的程序正确地组合在一起。
为什么不内置输入输出语句?
并非所有的程序都要用到I/O(输入/输出)包,并且C语言的一个基本设计原则是避免不必要的成分。经济地使用资源的颜色使得C语言在嵌入式编程中非常流行。#include甚至不是C语言的语句!第一列中的#符号表明这一行是在编译器接手之前由C预处理器处理的语句。
2.main()函数
int main(void)
一个C程序(不考虑例外)总是从被称为main()的函数开始执行的。
int指明了main()函数的返回值类型。这意味着main()函数返回值的类型是整数。返回给操作系统。
3.注释
1.//
2./* */
/*
*/
4.花括号、程序体和代码块
所有的C函数都使用花括号来表示函数体的开始与结束。它们的存在是必不可少的
5.声明
int num;
这个特殊的例子声明两件事。第一,在函数中您有一个名为num的变量。第二,int说明num是一个整数,编译器使用这个信息为变量num在内存中分配一个合适存储空间。
本例中num是一个标识符,也就是您为一个变量、函数或其他实体所选的名字。这样该声明把一个特殊的标识符和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型(也即数据类型)。
您可能有三个问题?数据类型是什么?可以选择什么样的名字?为什么必须对变量进行声明?
①.数据类型
C语言可以处理多个数据类型。把一个变量声明为整数或字符类型是计算机正确存储、捕获和解释该数据类型的基本前提。
②.名字的选择
尽量使用有意义的变量名(例如数羊sheep_count)。若名字无法表达清楚,可以加注释。
可供使用的字符有字母、数字、下划线。第一个字符不能是数字。字母区分大小写。
操作系统和C库通常用一个或两个下划线开始的名字,最好避免使用。
③.声明变量的4点好处
a.把所有变量放在一起,使读者更容易掌握程序的内容。配合有意义的变量名更好。
b.在编写程序前,考虑一下需要声明的变量会促使程序员做一些计划工作。
c.声明变量可以帮助避免程序中出现一类很难发现的细微错误,即变量名的错误拼写。
d.如果没有声明所有变量,将不能编译程序。
C99允许变量声明分散放置,如果在变量赋值之前声明变量,就不会忘记给变量赋值。
6.赋值
num = 1;
int num;语句在内存中为变量num分配了空间,该赋值语句在那个地方为变量存储了一个值。
7.printf()函数
printf("My favorate number is %d.\n");
圆括号表明printf是一个函数名。圆括号中包括的内容是从函数main()传递到函数printf()的信息。
printf()函数如何处理参数?程序将识别两个双引号之间的内容并把他们显示在屏幕上。
只需键入函数名字,把所需的参数放进圆括号里。当程序执行到这一行时,控制权将转给该函数(这里是printf())。当函数完成了它所要做的工作,控制权将返回给原来的函数(调用函数),这里是main()。
%d是一个占位符,其作用是指出输出num值的位置。%告诉程序把一个变量在这个位置输出,d告诉程序将输出一个十进制整数变量。实际上,printf()中f暗示着这是一种格式化(formating)的输出函数。
8.return语句
2.3一个简单程序的结构
函数头包括预处理语句和函数名。可以通过圆括号识别一个函数名,圆括号里面可能是空的。而函数体位于花括号中并由一系列语句组成,每个语句以一个分号结束。
2.4使程序可读的技巧
1.选择有意义的变量名和使用注释。
2.使用空行分割一个函数的概念上的多个部分。
3.每个语句用一行
2.5多个函数
C的惯例是把main()函数放在开头,因为它通常微程序提供了最基本的框架。
2.6调试
1.语法错误
2.语义错误
3.程序状态
跟踪程序状态的方法之一:逐步执行程序
另一种查找语义错误的方法:在程序的几个关键点处加入额外的printf()语句以监视所选变量的值。
检查程序状态的第三种方法是使用调试器。
2.7C语言的关键字和保留字