`
cheng330301560
  • 浏览: 179119 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C语言变量

阅读更多

变量
在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编译器描述变量的类型但并不为变量分配存储空间定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量进行初始化。
局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声明。
局部变量
在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。
自动变量auto
函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中int b, c=3; auto int b, c=3; 是等价的。

自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初值,则它的值是一个不确定的值。
静态局部变量static
静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。

静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初值的,即只赋初值一次。
SDT编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由具体的编译器所决定,使用前最好测试一下。
寄存器变量register
register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU的寄存器中,以加快其存取速度。

对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的C编译程序的一个很有价值的补充。随着编译程序技术的进步,在决定哪些变量应当被存到寄存器中时,现在的C编译程序能比程序员做出更好的决定。
全局变量
在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式都是在编译时分配内存,但是作用范围有所不同。
静态外部变量static
静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义

外部变量extern
定义函数中的全局变量时,其缺省格式是外部变量类型。
外部变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引用。
下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:
extern int   decl1;   // this is a declaration

struct decl2
{
   int member;
};       // this just declares the type – no variable mentioned

int     def1 = 8;   // this is a definition

int     def2;   // this is a definition
函数
内部函数的声明和定义多在当前源文件中完成;而外部函数通常在源文件中定义,在头文件中声明。
内部函数
只在当前源文件中使用的函数应该说明为内部函数。内部函数应该在当前源文件中声明和定义。若内部函数在头文件中声明,其他源文件通过包含这个头文件也可使用这个函数,但这样就失去了其做为内部函数的意义。
优点:使用内部函数,可以使函数只局限于所在文件。这避免了与其他源文件中可能出现的同名函数发生冲突。
例:
File
function1.c
#include “function1.h”
static int stat_func(void);

void MasterFunction(void)
{

rc = stat_func( );

}

static int stat_func(void)
{
   …
   return rc;
}

外部函数
对于可在当前源文件以外使用的函数,应该在一个头文件中声明。其他源文件可通过包含这个头文件或进行声明来使用这些函数(推荐用前者)。
一个良好的编程习惯是在头文件中声明函数的原型。这可方便编译程序查错。定义函数时,缺省的函数类型是外部函数。如:void fun2(void); extern void fun2(void); 其函数类型是等价的,但前一个是定义函数,后一个是声明函数。
小结
编写程序,尤其是大型程序时,建议采用上文所述的方法对不同的变量、函数进行必要的声明、定义。做好这些细节上的事务,可以为您的编程、调试、移植等带来很大的方便。

分享到:
评论

相关推荐

    51单片机C语言变量定义.pdf

    标题《51单片机C语言变量定义》和描述《51单片机C语言变量定义》揭示了本文档主要围绕51单片机使用C语言进行编程时变量定义的具体知识点展开。51单片机通常指的是基于Intel 8051微控制器架构的一系列微控制器,广泛...

    C语言变量名命名规则[整理].pdf

    C语言变量名命名规则[整理].pdf

    C语言变量命名规则

    对于任何C语言程序员来说,理解并遵循变量命名规则是至关重要的,因为这直接影响到代码的可读性和维护性。本文将深入探讨C语言中的变量命名规则,帮助你形成良好的编码习惯。 首先,我们要明确变量在C语言中的作用...

    如何合理设置C语言变量.pdf

    "C语言变量存储类型和数据类型分析" 本文将从C语言变量的存储类型和数据类型的角度出发,对C语言变量的五种存储类型(auto、register、static、extern、const)进行详细分析,并探讨如何合理设置C语言变量的存储...

    C语言变量的地址.pdf

    本文将深入探讨C语言变量的地址及其相关概念。 首先,内存可以看作是一个巨大的数组,由无数个称为字节(Byte)的小单元组成,每个字节有自己的地址。对于C语言中的变量,它们的地址通常是十六进制表示的数字,如0x...

    C语言变量及赋值共2页.pdf.zip

    "C语言变量及赋值"是学习C语言的基础,下面将详细讲解这一主题。 变量在C语言中是存储数据的容器,它具有特定的类型,比如整型(int)、字符型(char)、浮点型(float或double)等。变量在使用前必须先声明,声明时需要...

    C语言变量命名规范源码.zip

    C语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zipC语言变量命名规范.zip

    大一新生的C语言变量练习

    大一新生的C语言变量练习

    C语言变量命名规则.doc

    C语言变量命名规则.doc

    C语言 变量详解及示例代码

    本文将深入探讨C语言变量的基础知识,包括变量的定义、声明、类型,以及左值和右值的概念。 首先,理解变量的本质至关重要。在C语言中,变量是程序内存中的一块区域,它具有特定的类型,决定其存储的大小和能存储的...

    C语言变量详解[归纳].pdf

    C语言变量详解[归纳].pdf

    c语言变量和常量的使用1

    C语言是计算机编程的基础,它的变量和常量是构建程序的核心元素。理解并熟练使用它们对于任何想要深入学习C语言的人来说都是至关重要的。 首先,我们来谈谈“变量”。在C语言中,变量可以看作是存储数据的容器。每...

    单片机中断和C语言变量类型

    先介绍下C语言中的变量类型,简单的说有局部变量和全局变量两种。 变量的声明,就是告诉编译器,要在内存当中划出一块空间来存储该变量,而这个空间的大小跟变量的数据类型有关,比如char类型、int类型、long类型...

    C语言变量、函数和流程控制

    有关C语言初级程序中变量,函数和流程控制的介绍

    6-C语言变量和常量.pdf

    在C语言中,变量和常量是编程的基础概念,它们分别代表了可变和不可变的数据存储。 **变量**在C语言中扮演着至关重要的角色。变量是内存中的一个存储单元,用于保存程序运行时的值。当你定义一个变量时,你实际上是...

    C语言变量类型的深入分析

    C语言变量类型的深入分析 C语言变量类型是C语言编程的基础概念,理解变量类型的本质是编写高效、正确的C语言程序的关键。本文将深入分析C语言变量类型,探讨变量类型的本质、变量类型的作用、多级指针的理解等内容...

    单片机C语言变量名命名规则整理(20160512224923).pdf

    单片机程序命名规范,C语言命名规范和关键字。单片机程序命名规范,C语言命名规范和关键字。单片机程序命名规范,C语言命名规范和关键字。

    C语言变量作用域的总结

    自己总结的通俗易懂的变量作用域。

Global site tag (gtag.js) - Google Analytics