1、变量类型
变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。C语言中,变量是指在程序运行期间其值可以发生改变的量。它用于从外部接收数据、保存不断变化的值、中间结果以及最终结果,这是常量无法实现的功能。变量有三要素:变量名、值和数据类型。一个变量应该有一个名字即变量名,在内存中占据一定的存储单元,在该存储单元中存放变量的值。
在C语言中,有不同类型的变量,例如:
类型 | 描述 |
char | 通常是一个字节(八位), 这是一个整数类型。 |
int | 整型,4 个字节,取值范围 -2147483648 到 2147483647。 |
float | 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。 |
double | 双精度浮点值。双精度是1位符号,11位指数,52位小数。 |
void | 表示类型的缺失。 |
2、定义声明变量
要创建变量,必须指定类型并为其分配值:
type variable = value;
在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double 或任何用户自定义的对象,也可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:
#include <stdio.h> extern int a,b; extern int c; extern float f; int main () { int a,b; int c = -1; float f; a = 10; b = 20; c = a + b; printf("value of c : %d \n",c); f = 70.0/3.0; printf("value of f : %f \n",f); return 0; }
可以在不分配值的情况下声明变量,然后在以后分配值:
int i, j, k;
char c, ch;
float f, money;
double d;
3、变量名及命名规则
变量名的开头不能是数字,可以由字母或下划线开头。但,实际上编程中最常用的是以字母开头,而以下划线开头的变量名是系统专用的。
随便打开一个头文件就会看到,它里面所有的变量名、宏名、函数名全是以下划线开始的。
所以为了避免与系统定义的名字产生冲突,在编程的时候,除非要求这么定义,否则永远都不要使用下划线作为一个变量名的开头。
变量名以字母 A-Z
或 a-z
或下划线 _
开头,后跟零个或多个字母、下划线和数字(0-9
)。
变量名内不允许出现标点字符,比如 @
、$
和 %
。C 是区分大小写的编程语言。例如,Cjavapy
和 cjavapy
是两个不同的标识符。
4、局部变量
局部变量是定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。
例如,
#include <stdio.h> int main(){ int n = 30; //局部变量 //代码块由{}包围 { int n = 40; //局部变量 printf("block n: %d\n", n); } printf("main n: %d\n", n); return 0; }
5、全局变量
全局变量是定义在所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c
和.h
文件。
例如,
#include <stdio.h> int n = 10; //全局变量 void func1(){ int n = 20; //局部变量 printf("func1 n: %d\n", n); } void func2(int n){ printf("func2 n: %d\n", n); } void func3(){ printf("func3 n: %d\n", n); } int main(){ int n = 30; //局部变量 func1(); func2(n); func3(); //代码块由{}包围 { int n = 40; //局部变量 printf("block n: %d\n", n); } printf("main n: %d\n", n); return 0; }