发布日期:2015-12-30 11:26 来源: 标签: 编程语言 C教程 C语言变量 C语言函数存储类型
本章我们主要学习C语言变量与函数存储类型,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
C语言中变量的声明/定义格式如下:
存储类型    类型修饰符    数据类型    变量名;
存储类型:用来指明变量的存储位置,即运行该变量在哪一段分配内存空间,常见的存储位置有auto、extern、register、static,在一段执行程序中,可以为变量分配存储空间的有BSS、数据区、栈区、堆区。
类型修饰符:用来修饰变量的存储和表现方式。包括long、short、signed、unsigned、void、const、volatile等。
数据类型:用来指明该变量的存储大小,即一个该类型的变量要占用多少内存空间。基本数据类型有(char、int、float、指针类型)和由基本数据类型组成的用户自定义类型(struct、enum、typedef、union)
C语言中函数的声明格式如下:
存储类型    返回数据类型    函数名(参数列表)
存储类型:用来标识该函数的作用域,而不是存储位置,主要有extern、static两个,auto和register不用来表示程序的存储类型。
返回数据类型:函数退出时返回给调用者的数据类型。
1、关于auto存储类型
auto只能用来表示变量的存储类型,意味自动类型,表示该局部变量存储在运行时进程的栈区域,一般而言,对于局部变量、auto为默认的存储类型。所以可以省略不写。注意,局部变量如果没有初始化就直接拿来使用,那么系统会随机的分配一个值给它,这是不安全的。auto类型的变量每一次调用都会被初始化一次。
2、关于全局变量和extern声明的数据
extern既可以声明变量也可以标识函数。对于用来声明变量,extern声明在当前文件中引用的定义在其它文件中的全局变量。已经初始化的全局变量被存储在数据区中,所以声明其他文件中的全局变量将不会在为其分配内存空间。
声明一个变量和定义一个变量的区别:
定义一个变量:告诉编译器需要为该变量分配多少空间。
声明一个变量:告诉编译器需要使用该变量,但该变量在其他位置被定义。
对于一个函数,存储类型仅仅标识函数的作用域,默认的存储类型是extern。
声明全局变量的两种方式:
1、在头文件中定义,然后引用头文件
2、在其他文件中定义,然后使用extern引用变量。
3、register存储类型
register关键字只能定义局部变量,只能修饰整形或者字符型,主要表示长期被使用的变量。被register定义的局部变量长期存在于寄存器中,寄存器变量被用于循环控制是比较理想的。和auto一样,如果未初始化就直接使用register变量,那么系统讲随机分配一个变量。
4、static存储类型
static既可以标识变量也可以标识函数。被定义为静态类型的变量(无论是全局的变量、还是局部变量)都存储在数据区域,其生命周期为整个程序。如果是静态的局部变量,其作用域为自身所处的{ }内,如果是静态全局变量,其作用域为整个当前文件。
静态变量如果没有被初始化,系统讲自动初始化为0值,只会被初始化一次。
static定义的函数的作用域只能是当前文件,因此不能在其他文件中被调用。对于不需要在其他文件中被调用的函数,声明为static是必要的,这样也在一定程度上避免函数名称的冲突。
5、常量数据
常量数据存储在代码段,其生存期为整个程序的运行时间,但是其作用域为当前文件。

相关评论

专题信息
    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。