C语言系列04- C程序,include指令、头文件、变量声明,函数声明初识

可以把程序看作是你希望计算机如何完成任务的描述。编译器负责处理一些细节工作,例如把你要计算机完成的任务转换成底层的机器语言

由于编译器不具有真正的智能,所以必须用编译器能理解的术语表达我们的意图,这些术语就是C语言标准规定的形式规则(尽管有些约束,但总比直接用机器语言方便得多)。

简单的C程序示例

#include <stdio.h>
#define MAX 1000
/*
    main函数
    C程序包含一个或多个函数,它们是C程序的基本模块
*/
int main(void)                 
{
     int num;                     /* 定义一个名为num的变量 */
     num = 1;                     /* 为num赋一个值 */

     printf("I am a simple ");    /* 使用printf()函数 */
     printf("computer.\n");
      printf("MAX is%d\n", MAX);
     printf("My favorite number is %d because it is first.\n",num);
     return 0;
}

include预处理指令

#include<stdio.h>
/*
#include <stdio.h>的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。
这是一种“拷贝-粘贴”的操作。include文件提供了一种方便的途径共享许多程序共有的信息。
*/

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

所有的C编译器软件包都提供stdio.h文件。该文件中包含了供编译器使用的输入和输出函数(如,printf)信息。该文件名的含义是标准输入/输出头文件(standard input/output header

头文件

通常,在C程序顶部信息集合被称为头文件(header)。在大多数情况下,头文件包含了编译器创建最终可执行程序要用到的信息。例如,头文件中可以定义一些常量,或者指明函数名以及如何使用它们(函数签名)。但是,函数的实际代码在一个预编译代码的库文件中。

头文件帮助编译器把你的程序正确地组合在一起。ANSI/ISO C规定了C编译器必须提供哪些头文件。

比如我们在项目开发中,可以把一些自己开发的常用的工具函数集中到一起,做成我们自己开发的函数库。然后把相关的函数声明,预定义的常量等封装到一个.h 的头文件中。

main()函数

int main(void)

C程序一定从main()函数开始执行(目前不必考虑例外的情况)。int是main()函数的返回类型。这表明main()函数返回的值是整数。返回到哪里?返回给操作系统。除了main()函数,你可以任意命名其他函数,而且main()函数必须是开始的函数

注释

/*一个简单的程序*/

在程序中,被/* */两个符号括起来的部分是程序的注释。写注释能让他人(包括自己)更容易明白你所写的程序。

C99新增了另一种风格的注释,普遍用于C++和Java。这种新风格使用//符号创建注释,仅限于单行。

// 这种注释只能写成一行。
int rigue; // 这种注释也可置于此。

花括号、函数体和块

花括号把main()函数括起来。一般而言,所有的C函数都使用花括号标记函数体的开始和结束。这是规定,不能省略。只有花括号({})能起这种作用,圆括号(())和方括号([])都不行。

花括号还可用于把函数中的多条语句合并为一个单元或块

if () {
    ...
}

while(condation) {

}

声明

int num;

这行代码叫作声明(declaration)。声明是C语言最重要的特性之一。在该例中,声明完成了两件事。

其一,在函数中有一个名为num的变量(variable)。

其二,int表明num是一个整数

CPU是做运算的硬件,程序代码指令和数据在运行时是保存在内存中的。

int是一种数据类型。编译器使用这些信息为num变量在内存中分配存储空间。

示例中的num是一个标识符(identifier),也就是一个变量、函数或其他实体的名称。声明把特定标识符与计算机内存中的特定位置联系起来同时也确定了存储在某位置的信息类型或数据类型

在C语言中,所有变量都必须先声明才能使用。这意味着必须列出程序中用到的所有变量名及其类型。

C语言的名称区分大小写,即把一个字母的大写和小写视为两个不同的字符。因此,stars和Stars、STARS都不同。

赋值

num = 1;

赋值是C语言的基本操作之一。该行代码的意思是“把值1赋给变量num”

在执行int num;声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这行赋值表达式语句时,把值存储在之前预留的位置。可以给num赋不同的值,这就是num之所以被称为变量(variable)的原因

赋值表达式语句从右侧把值赋到左侧。另外,该语句以分号结尾

函数声明

/* two_func.c -- 一个文件中包含两个函数 */
#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次是函数原型(prototype),告知编译器在程序中要使用该函数;

第2次以函数调用(function call)的形式出现在main()中;

第3次出现在函数定义(function definition)中,函数定义即是函数本身的源代码

函数声明就是定义函数的返回值类型,参数的个数,每个参数的类型。

C标准建议,要为程序中用到的所有函数提供函数原型。标准include文件(包含文件)为标准库函数提供了函数原型

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值