学习C语言笔记:初始C语言

Source

学习内容:

1.运算符——=;

2.函数——main()、printf();

3.编写一个简单的C程序;

4.创建整型变量,为其赋值并在屏幕上显示其值;

5.换行字符;

6.如何在程序中写注释,创建包含多个函数的程序,发现程序的错误;

7.什么是关键字。

从一个简单的C程序示例开始

first.c程序如下,该程序演示了用C语言编程的一些基本特性。

#include<stdio.h>
int main(void)                           /*一个简单的C程序*/
{
    int num;                         /*定义一个名为num的变量*/
    num=1;                           /*为num赋值*/
    printf("I am a simple ");        /*使用printf()函数*/
    printf("computer.\n");
    printf("My favorite number is %d because it is first.\n",num);

    return 0;
}

通过查看此程序代码你会认为该程序会在屏幕上打印一些内容,那就对了!但是光看程序也许并不知道打印的具体内容,所以,运行该程序,并查看结果。首先,用你熟悉的编辑器创建一个包含first.c所有内容的文件。给该文件命名,并以.c作为扩展名,以满足当前系统对文件名的要求。然后编译并运行该程序。如果运行正常,该程序的输出应该是:

I am a simple computer.                                                                                                

My favorite number is 1 because it is first.

程序中的\n和%d是什么呢?接下来学习关于上面程序中每一行代码的含义。

#include:预处理器指令;

int main():main()总是第1个被调用的函数,是组成函数的语句;

function a():函数,函数是组成C程序的构造块;

 C语言中的6种语句:

标号语句;符合语句;表达式语句;选择语句;迭代语句;跳转语句;

#include<stdio.n>                包含另一个文件

该行告诉编译器把stdio.h中的内容包含在当前程序中。stdio.h是C编译器软件包含的标准部分,他提供键盘输入和屏幕输出的支持。#include<stdio.h>的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。实际上,这是一种“粘贴-拷贝”的操作。include文件提供了一种方便的途径共享许多程序共有的信息。

#include这行代码是一条C预处理器指令。通常,C编译器在编译前会对源代码做一些准备工作,即预处理。

所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使用的输入和输出函数(如printf())信息。该文件名的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件。

头文件包含了编译器创建最终可执行程序要用到的信息。例如,头文件中可以定义一些常量,或者指明函数名以及如何使用它们。但是,函数的实际代码在一个预编译代码的库文件中。简而言之,头文件帮助编译器把你的程序正确地组合在一起。使用哪些函数要包含对应的头文件。例如,使用printf()函数,必须包含stdio.h头文件。

int main(void)                        函数名

C程序包含一个或多个函数,它们是C程序的基本模块。程序first.c中有一个名为main()的函数。圆括号表明main()是一个函数名。int 表明main()函数返回一个整数,void 表明main() 不带任何参数。int 和 void是标准ANSI C定义main()的一部分。一般,void也是可以省略的。

C程序一定从main()函数开始执行。除了main()函数,你可以任意命名其他函数,而且main()函数必须是开始的函数。圆括号的作用是什么呢?用于识别main()是一个函数。

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

注释在/*和*/两个符号之间,这些注释能提高程序的可读性。注意,注释只是为了帮助读者理解程序,并不会参与编译与运行。还有另一种风格的注释:

//一个简单的C程序

这种注释仅限于单行,一行末尾就标志着注释的结束,所以这种风格的注释只需在注释开始处标明//符号即可。 

{                                        函数体开始

左花括号表示函数定义开始,右花括号表示函数定义结束。

return 0;                                return 语句

C函数可以给调用方提供一个(或返回)数。目前,可暂时把该行看作是结束main()函数的要求。

int main(void)中的int表明main()函数应返回一个整数。C标准要求main()这样做。有返回值的C函数要有return语句。该语句以return关键字开始,后面是待返回的值,并以分号结尾,如果遗漏main()函数中的return语句,程序在运行至最外面的右花括号时会返回0。因此,可以省略main()函数末尾的return语句。但是,不要在其他有返回值的函数中漏掉它。

换行字符

printf()函数的双引号中的\n字符并未输出,这是为什么呢?\n的意思是换行。\n组合代表一个换行符。对于printf()而言,它的意思是“在下一行的最左边开始新的一行”。也就是说,打印换行符的效果与在键盘按下Enter键相同。既然如此,为何不在键入printf()参数时直接使用Enter键呢?因为编辑器可能会认为这是直接的命令,而不是存储在源代码中的指令。换句话说,如果直接按下Enter键,编辑器会退出当前行并开始新的一行。但是,换行符仅会影响程序输出的显示格式。

换行字符是一个转义序列。转移序列用于代表难以表示或无法输入的字符。如\t代表Tab键,\b代表Backspace键(退格键)。每个转义序列都以反斜杠字符(\n)开始。

什么是数据类型?如何命名变量?

C语言可以处理多种类型的数据,如整数、字符和浮点数。

可以用小写字母、大写字母、数字和下划线来命名变量。而且,名称的第一个字符必须是字母或下划线,不能是数字。C语言的名称区分大小写,即把一个字母的大写和小写视为两个不同的字符。

多个函数

上面程序中使用了printf()函数,那么,如何将自己的函数加入到程序中呢?

#include<stdio.h>
void butler(void);              /*ANSI/ISO C函数原型*/
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");
}

输出: 

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

关键字和保留标识符

关键字是C语言的词汇。它们对C而言比较特殊,不能用它们作为标识符(如,变量名)。许多关键字用于指定不同的类型,如int。还有一些关键字(如,if)用于控制程序中语句的执行顺序。下表是C语言的一些关键字。

如果使用关键字不当(如,用关键字作为变量名),编译器会将其视为语法错误。还有一些保留标识符,C语言已经指定了它们的用途或保留它们的使用权,如果你使用这些标识符来表示其他意思会导致一些问题。因此,尽管它们也是有效的名称,不会引起语法错误,也不能随便使用。保留标识符包括那些以下划线字符开头的标识符和标准库函数名,如printf()。