您当前的位置:首页 > 互联网教程

C语言中有哪些存储类型

发布时间:2025-05-13 03:03:55    发布人:远客网络

C语言中有哪些存储类型

一、C语言中有哪些存储类型

局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进

行说明,当auto省略时,所有的非全程变量都被认为是局部变量,所以auto实际上

static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它

函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。

Turbo C将大型程序分成若干独立模块文件分别编译,然后将所有模块

的目标文件连接在一起,从而提高编译速度,同时也便于软件的管理和维护。静态

全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与

全程变量的区别是:全程变量可以再说明为外部变量(extern),被其它源文件使用,

而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。

extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要

被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用

二、C语言中共有哪几种存储类型

Turbo C2.0支持四种变量存储类型。说明符如下:

局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进

行说明,当auto省略时,所有的非全程变量都被认为是局部变量,所以auto实际上

局部变量在函数调用时自动产生,但不会自动初始化,随函数调用的结束,这

个变量也就自动消失了,下次调用此函数时再自动产生,还要再赋值,退出时又自

static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它

函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。

Turbo C2.0允许将大型程序分成若干独立模块文件分别编译,然后将所有模块

的目标文件连接在一起,从而提高编译速度,同时也便于软件的管理和维护。静态

全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与

全程变量的区别是:全程变量可以再说明为外部变量(extern),被其它源文件使用,

而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。

extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要

被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用

register称为寄存器变量。它只能用于整型和字符型变量。定义符register说

明的变量被Turbo C2.0存储在CPU的寄存器中,而不是象普通的变量那样存储在内

存中,这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,

一旦超过两个,编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量

来处理。因此,寄存器变量常用在同一变量名频繁出现的地方。

另外,寄存器变量只适用于局部变量和函数的形式参数,它属于auto型变量,

因此,不能用作全程变量。定义一个整型寄存器变量可写成:

对于以上所介绍的变量类型和变量存储类型将会在以后的学习中,通过例行程

序中的定义、使用来逐渐加深理解。

三、C语言变量的基本类型有哪些

c语言的变量有三种类型:char,int,float,double

其中char为字符类型的变量是八位的,最前一位作为符号位,后面七位作为数据位.它的存储范围在-128到127之间.

int整数类型的变量是16位的,最前一位为符号位,后面的15位作为数据位.它的存储范围在-215到215-1.也就是-32768到32767.它不包扩小数点以后的数,在一般编译器中给int类型赋予带有小数的数.编译器会自动去掉小数点后面的数保留整数部分.

float为浮点数类型.首先要说明的是浮点数有两部分组成,第一部分是指数,也就是多少次幂嘛.第二部分是由尾数组成也就是一个数科学表示发之后除去幂那部分剩下的(呵呵!!!)如1.33333.那么c中的浮点数就有三部分.32位的浮点数第一位就是第一部分它决定数的符号.第二部分是八位的指数.第三部分是23位的尾数.所以浮点数具有6到7位的存储精确度.范围为3.4e-38到3.4e+38的数值.注:3.1415926e+7表示3.1415926.0.在给浮点数赋值的时候可以采用如下方法.123.45和1.2345e2是等价的.

double为双精度型变量.c编译器通常用64位来存储双精度性变量.它的精确度能够达到14到15位.64位中第一位是符号位.后面的11位是指数位.最后的52位是尾数.它的范围是-1.7e-308到1.7e+308.

类型标识符:unsigned,short,register,long和signed.

其中unsigned提示编译器不要保留符号位,这样可以扩大数据类型正数的范围.比如unsigned int的范围就变位0到65535了.

short类型用在有的编译器不能给太大的存储范围,需要给一个比较低的溢出界限.比如有的编译器就用的是32位来存储int类型.用short来标识它可以保证int是用16位来标识的.

register表示一个变量可能会用得很频繁.需要很快得存取速度所以指定的把它存到寄存器当中.

long表示不希望用16位来存储整形变量时可以用long指定它用32位来存储可以得到更大得表示范围.

当然还有long unsigned int这样得类型.

用户可以使用typedef来自己定义自己需要得数据类型.如下例:

typedef unsigned long int myint;

这样num1就是unsigned long int类型的了.