C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

4.3.2 变量

在C语言中,值可以改变的量称为变量。变量应该有一个名字,它在内存中占据一定的存储单元。变量定义必须在变量使用之前,一般放在函数体的开头部分。

1.变量的基本知识

任何一种编程语言都离不开变量,特别是在数据处理的程序中,变量使用非常频繁。没有变量参与的程序甚至会无法编制,即使运行后意义也不大。变量之所以重要,是因为它是编程语言中数据的符号标识和载体。

C语言是一种应用广泛且便于实现控制的语言,变量在C语言中的应用更是灵活多变。变量是内存或寄存器中用一个标识符命名的存储单元,可以存储一个特定类型的数据,并且数据的值在程序运行过程中是可以修改的。程序员一旦定义了变量,那么,变量至少可为我们提供两个信息:一是变量的地址,即操作系统为变量在内存中分配的若干位置的首地址;二是变量的值,也就是变量在所分配的内存单元中所存放的数据。

C语言中的变量类型有如下几种。

❑ 数据类型的变量:如字符型cHar、整型iTimes、单精度型faverage。

❑ 全局变量或者全程变量。

❑ 局部变量。

❑ 静态变量,它又分为静态全局变量和静态局部变量,它的修饰字符是static。

❑ 寄存器变量:其修饰字符是register。

❑ 外部变量:其修饰字符是extern。

在C语言中,变量在内存中占用的大小是由数据类型决定的。对于不同数据类型的变量,为其分配的地址单元数也是不一样的。C语言中常用的数据类型有布尔型、字符型、短型、整型、长型、单精度型、双精度型。除了上述几种基本的数据类型外,用户还可以自定义所需要的数据类型。

2.变量作用域

在函数内部说明的变量为局部变量,只有在函数执行时,局部变量才存在。当函数执行完退出后,局部变量会随之消失。也就是说当函数执行完退出后,原先在函数内定义的变量现在就不能用了,这通常由编译器保证,它会阻止编译通过。即原来为这个局部变量分配的内存,现在已经不属于它,它无权再访问了。如果要再使用这些内存单元就必须重新定义变量,并且只有分配给它变量后才可访问它。否则,就会出错,如数组越界访问。

与局部变量不同,全局变量在整个程序中都是可见的,在整个程序的运行过程中,对于任何一个程序它都是可用的。全局变量说明的位置在所有函数之外,但可由任何一个函数使用、读取或者写入。例如下面的代码。

    int quanju;                                    //定义全局变量
    int min(int x, int y);
    int main(void) {
        int a, b;                                   //定义变量
        printf("\n输入数字:");                   //调用库函数中的输出函数
        scanf("%d, %d", &a, &b);                   //调用库函数中的输入函数
        quanju =min(a, b);                        //调用用户定义的函数
        printf("minimum:%d\n", quanju);
    }
    int min(int x, int y)                         //定义函数
    {
        int t=0;                                   //声明变量
        //函数体
        if(x<y) t=x;
        else t=y;
        return(t);
    }

在上述代码中,由于变量quanju是一个全局变量,所以它可以在main函数内部使用,也可以在main函数的外部使用;而变量a和b是在main函数的内部定义的,所以它只能在main函数的内部使用。

3.变量标识符

在C语言中,标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。标识符是一个名字,C语言中的标识符必须遵循如下4个原则。

❑ 第1个字符必须是字母(不分大小写)或下画线(_)。

❑ 后跟字母(不分大小写)、下画线(_)或数字。

❑ 标识符中的大小写字母有区别,如变量sum、Sum、suM代表3个不同的变量。

❑ 不能与C编译系统已经预定义、具有特殊用途的保留标识符(即关键字)同名。比如,不能将标识符命名为float、auto、break、case、this、try、for、while、int、char、short和unsigned等。

4.变量的声明

声明C语言变量的格式如下。

    变量类型 变量名;

例如,下面的代码分别声明了整型变量m和单精度型变量n。

    int m;
    float n;

可以在同一行中同时声明多个变量,两个变量名称之间用逗号隔开。看下面的代码:

    int m, n;
    float a, b;

下面将通过一个具体的实例来说明C语言变量的使用方法。

实例4-1

提示用户输入圆的半径,根据输入的半径值计算圆的周长和面积

源码路径daima\4\4-1\

本实例的实现文件为“area.c”,具体代码如下。

    #include <stdio.h>
    #define PI 3.14             //定义一个符号常量
    int main(void){
      float r, area, circ;       //定义3个变量
      printf("\n enter num:"); //提示用户输入圆的半径
      scanf("%f", &r);
      circ=PI*(2*r);            //计算圆周长
      area=PI*(r)*(r);          //计算圆面积
      printf("\zhouchangshi:%f", circ); //显示结果
      printf("\mianjishi:%f", area);
    }

拓展范例及视频二维码

范例4-1-01:计算正方形的面积

源码路径:演练范例\4-1-01\

范例4-1-02:计算矩形的面积

源码路径:演练范例\4-1-02\

编写代码完毕后,运行上述代码后将首先输出字符“enter num:”。假设在屏幕中输入一个数字“2”,按Enter键后将分别输出以此数据作为半径对应的周长和面积,如图4-2所示。

图4-2 运行界面