C

C 知识量:16 - 74 - 317

2.2 更复杂的示例><

多个函数- 2.2.1 -

第一个示例中只涉及了一个main()函数,实际上一段“正常”的程序通常会包含许多的函数,下面一个复杂点的示例将包含三个函数:

#include <stdio.h>
void James(void);
void Julie(void);

int main(void) {
    /*两个人介绍自己的年龄,
    James说*/
    James();
    //Julie说
    Julie();
}

void James(void) {
    int JamesAge = 24;
    printf("hello,Julie,I am %d years old.What about you?\n", JamesAge);
}

void Julie(void) {
    int JulieAge = 23;
    printf("I am %d years old.\n", JulieAge);
}

以上代码包含了3个函数:一个main主函数;一个名为James的函数;一个名为Julie的函数。其中,James函数和Julie函数包含于main主函数中。具体的解析如下:

  • #include <stdio.h>  表示包含标准输入/输出库的信息,这样就可以在程序中调用输入输出的库函数。

  • void James(void);   表示函数声明,也叫函数原型,用于告知编译器在程序中要使用该函数。该行声明了James函数。

  • void Julie(void);   表示声明Julie函数。

  • int main(void) {...}   表示main主函数及其函数体。

  • /*...*/和//   表示注释语句,起解释说明作用,编译器将会忽略它们和其中的内容。其中,/*...*/可以一次注释多行;而//只能注释单行。

  • James()和Julie()   表示函数调用。即调用James函数和Julie函数,何时执行James函数和Julie函数就取决于它们被调用的位置。调用的方式就是写出函数的名称,后面加一个括号即可。

  • void James(void) {...}   表示函数定义,即函数本身的源代码。这里定义了James函数,void表明它不返回任何值,且没有任何参数。

  • int JamesAge=24;   表示声明一个名为JamesAge的变量并赋值为24。变量代表了在内存中存储数据的空间,它的名称可以自己决定,但不能使用系统保留的不允许使用的名称(即关键字),int规定了变量的类型为一个整数,=是赋值操作符,用于给变量赋值。24就是变量被赋的实际值。

  • printf("hello,Julie,I am %d years old.What about you?\n", JamesAge);   表示printf()是标准输入/输出库(stdio.h)中的函数。其名称中的“f”表示它是一个“格式化”的打印函数,引号内的文本就是打印的内容。其中,%d是一个占位符,表示这里将被一个整数代替,引号外面的JamesAge就是实际将打印的整数变量,它将替换%d。

  • void Julie(void) {...}   表示定义Julie函数。

提高程序可读性- 2.2.2 -

可读性高的程序更容易被人理解,以后修改也更容易,因此,编写可读性高的程序是一个良好的编程习惯。下面是一些基本的提高程序可读性的技巧:

  • 选择有意义的标识符名称,如变量名或函数名等,可以让人一看便知道其代表的含义。

  • 及时为语句添加注释。

  • 在函数中用空行分隔概念上的多个部分。

  • 确保每条语句各占一行。

关键字和保留标识符- 2.2.3 -

关键字是C语言的词汇,它们用于指定数据类型、控制语句执行顺序等,对C语言来说,是十分特殊的词,不能用它们作为标识符。C语言的关键字如下表所示:

auto extern short while
break float signed _Alignas
case for sizeof _Alignof
char goto static _Atomic
const if struct _Bool
continue inline switch _Complex
default int typedef _Generic
do long union _Imaginary
double register unsigned _Noreturn
else restrict void _Static_assert
enum
return volatile _Thread_local

如果将关键字作为自定义的函数名或变量名,编译器就会视为语法错误。

对于C语言的保留标识符,由于已经指定了用途或保留了它们的使用权,所以如果不当使用它们,即使编译器不报错,也可能会导致意想不到的问题,因此不要随意使用。