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 运行界面