变量说明:
类型 变量表;
类型为系统和自定义的结构类型
变量表用,号来进行不同变量的区分,表示同一类型
用;号结束
变量种类:
根据变量所存在的地方进行的分类,在函数内部,在函数参数声明,在函数外部。
局部变量(自动变量)-在函数内部声明,用auto说明,一般省略,不会自动初始化。
形式参数-函数声明里定义的变量,用来接受来自调用函数的参数,形式参数在函数内部如同局部变量一样使用。
全程变量-所有函数外说明的变量,能够在整个程序中被访问,
变量存储类型:
auto、static、extern、register
auto如上述
static:静态变量
静态局部变量:与局部变量的区别:局部变量当调用函数时,变量被创建,当执行完后,变量也被释放,如果是静态局部变量,当函数执行完后,该变量始终存在,但不能被其他函数使用,当再次进入该函数时,将保存上次的结果。
静态全程变量:C可以将一个大型程序分成若干个对立的模块进行编译,然后将所有模块的目标文件连接在一起,静态全程变量就是指只能被它所在的源文件被访问,不能被其他的关联源文件访问。全程变量可以被说明为extern变量(外部变量),被其他源文件访问。
extern:外部变量
由于一个大型程序有多个程序模块,所以对于全局变量能够被所以的文件都能访问到要使用extern说明。
register:寄存器变量
只能用于整型和字符变量。对于Turbo C,register变量存储在CPC的寄存器中,而不同于普通的变量是存储在内存中,但Turbo C只允许同时定义2个寄存器,超过两个会自动将超过限制数目的寄存器变量当作非寄存器变量来处理。所以寄存器变量一般用在同一变量名频繁出现的地方。
寄存器变量只适用于局部变量和参数变量,属于auto型,不能作为全程变量。
数组变量
相同数据类型的变量集,拥有相同的名字。通过下标来访问,物理上,由一段连续的内存区来满足空间需求。
一维数组:类型 变量名[长度]
多维数组:类型 变量名[第一维长度][第二维长度][第三维长度]
变量的初始化和赋值
变量的初始化;在变量被声明时被赋初值。Turbo C中外部变量和静态全程变量在程序开始处被初始化,局部变量和静态局部变量在进入函数时才被初始化。并且在所有全程变量在没有明确的初始化时将被自动清零,而局部变量和寄存器变量在未被赋值之前时值是不确定的。
外部变量和静态变量,初值必须是常数,而自动变量和寄存器变量可以是任意表达式。
单个变量初始化 单个变量赋值
static int I = 10, j; 整数和浮点数 int a , m;
int k = I * 5; float n;
char c = ‘y’; a = 100 , m = 10;
n = a * m * 0.1;
字符 char a0 , a1 , a2 ;
a0 = ‘b’;
a1 = 50;
a2 = ‘/x0d’;
数组变量的初始化
int p[2][3] = {{1,1,2},{4,5,6}}; 完整的初始化
int m[2][4] = {{1,1},{2,6,5}}; 初始化如果个数和数组什么的个数不等,编译器会用0补齐
int n[2][3] = {1,2,3,4,5,6}; 多维数组可以用一维数组初始化方法进行初始化
char *f[] = {‘d’,’b’,’c’} 指针型变量数组可以不规定维数,在初始化赋值时,数组维数从0开始被连续赋值。
指针型变量初始化 指针型变量赋值
int *I = 787; int *i;
float *f = 3.25; char *str;
char *s = “hello csdn!”; i = (int *)malloc(sizeof(int));
i = 100;
str = (char * )malloc(20);
str = “hello csdn”;
数组和指针
数组名是该数组的指针,可以把指针看作一个数组,数组名和指针实质都是地址,指针是变量,可以进行运算,动态分配内存空间;数组名是常量,不能进行进行运算,由系统自动分配空间。