变量声明和定义的区别

合集下载

变量的定义与声明

变量的定义与声明

1.变量的定义从前面的章节可以看出,程序中所有的东西几乎都有名字。

然而字面量却是个例外,它没有名字。

那么使用变量,我们就可以为某个值取名字了。

实际上,我们是为系统内存中用于保存数据的某块空间取名字。

ANSI C规定:变量必须“先定义、后使用”,因此当用C定义变量时,不仅需要指定变量名,而且还必须告诉编译器其存储的数据类型,变量类型告诉编译器应该在内存中为变量名分配多大的存储单元,用来存放相应变量的值(变量值),而变量仅仅是存储单元的别名,供变量使用的最小存储单元是字节(Byte)。

由此可见,每个变量都占据一个特定的位置,每个存储单元的位置都由“地址”唯一确定并引用,就像一条街道上的房子由它们的门牌号码标识一样。

即从变量中取值就是通过变量名找到相应的存储地址,然后读取该存储单元中的值,而写一个变量就是将变量的值存放到与之相应的存储地址中去。

由于变量的定义不是可执行代码,因此要求局部变量的定义必须位于用“{}包围的程序块”的开头,即在可执行代码的前面。

比如:int lower_limit = 80; //定义lower_limit为整型变量即在定义lower_limit为int类型数据时,系统就已经为变量lower_limit分配了存储单元。

请注意区分变量名和变量值这两个不同的概念,其中,lower_limit为变量名,80为变量lower_limit的值,即存放在变量lower_limit的存储单元中的数据。

那么到底如何获得变量的地址呢?C语言使用“&(地址运算符)加变量名”的方式获取变量的地址,比如,&lower_limit就代表变量lower_limit的地址,详见后续相关章节的描述。

一个定义只能指定一种变量类型,虽然后面所带的变量表可以包含一个或多个该类型的变量:int lower_limit , upper_limit , sum;但如果将一个定义语句中的多个变量拆开在多个定义语句中定义的话:int lower_limit; // lower_limit为数据下限int upper_limit;// upper_limit为数据上限int sum;// sum为求和的结果则可在各个定义语句中添加注释,则大大提高了程序的可阅读性,而且修改起来更加方便,但C编译器会忽略在每行右边用于描述变量用途的注释语句。

关于C++的变量和类的声明和定义

关于C++的变量和类的声明和定义

关于C++的变量和类的声明和定义什么是变量?变量或者叫对象,是⼀个有具名的、可以供程序操作的存储空间。

这⾥具名是指变量是有名字的,可供操作是指能进⾏加减乘除或者输⼊输出等操作,存储空间则是指有⼀块属于它的内存空间。

为了便于说明,标题和后⾯的内容将对象分为两种。

对于内置的,⽂章称作为变量,对于⾃定义的,称之为对象。

第⼀个问题:在C++中,什么是定义,什么是声明?①定义:⽤于为变量分配存储空间,还可为变量指定初始值。

在程序中,变量有且仅有⼀个定义。

②声明:⽤于向程序表明变量的类型和名字。

在程序中,变量可以有多个声明。

定义也是声明:当定义变量时我们声明了它的类型和名字。

上⾯的这些内容很容易理解,很多情况下,定义就是声明,由于C++⽀持分离式编译,因此⼀个C++程序允许别分成许多块,由这些块共同组成完整的程序。

既然程序可以分成多块,那么如果要在所有块之间共⽤⼀个变量,那就要能够在这些块之间共享代码。

为了⽀持这种分离式编译机制,C++中就将声明和定义区分开来了。

第⼆个问题:定义也是声明,那么如果仅仅声明?回答这个问题之前,需要了解什么是作⽤域,这⾥假定你已知晓C++的作⽤域知识。

在需要声明⼀个变量之前,先想⼀想为什么需要声明变量?因为程序需要使⽤定义在别处(通常是别的⽂件中)的变量。

这⾥使⽤别处的变量暗含了⼀个意义,这个变量应当是个全局变量,因为当前作⽤域找不到,所以需要去别的地⽅找,⽽别的地⽅定义的变量应当全局变量,能够被我看到(这⾥只考虑全局变量,其他情况暂不考虑)。

既然变量已经在别的地⽅定义过了,⽽且变量有且仅有⼀个定义,那么我不能再次定义⽽只能声明了,如何声明?声明的⽅式是使⽤extern关键词,形如extern int i,这⾥有了关键词extern的修饰,因此是⼀个声明,⽽不是定义。

从这个声明中,得知了变量的类型和名字,但是没有分配内存。

假如给上⾯声明的变量⼀个值,那还是不是声明呢?回答是:不是。

C++中的extern声明变量详解

C++中的extern声明变量详解

C++中的extern声明变量详解extern声明变量⽆外乎如下两种:1、声明全局变量2、声明函数今天我们只谈extern,什么const、static之类等等与之相关或不相关的⼀律忽略,下⾯就分别对以上两种情况⼀⼀讲解声明和定义既然提到extern声明变量,那我们就必须搞清楚声明和定义的区别。

这⾥我们将普通数据变量和函数统称变量。

从内存分配⾓度来说,声明和定义的区别在于声明⼀个变量不会分配内存,⽽定义⼀个变量会分配内存。

⼀个变量可以被声明多次,但是只能被定义⼀次。

基于以上前提,我们可以把声明和定义类⽐为指针和内存的关系。

我们知道,指针其实就是指向内存的⼀个符号,变量的定义就好⽐⼀块内存区域,⽽声明就好⽐它的指针,可以有多个指针指向同⼀个内存区域,⽽⼀个指针只能指向⼀个内存区域,这样就很好理解为什么变量只能被定义⼀次,如果被定义多次,那就会分配多个内存,这样你通过变量的声明到底去找哪块内存区域呢,这会是个问题。

对于数据来说,声明和定义往往是同时存在的,⽐如下⾯的⼀⾏语句复制代码代码如下:int data;这样既声明了data同时也定义了data,怎样做到只声明⽽不定义呢,⽤extern就可以了复制代码代码如下:extern int data;对于函数来说,声明和定义就很容易区分了,⼀般我们会将声明放在头⽂件⽽将定义放在源⽂件⾥复制代码代码如下:void hello();这是⼀个函数的声明,⽽复制代码代码如下:void hello(){printf("hello world!\n");}这是⼀个函数的定义。

当然,函数的声明和定义也可以同时发⽣,如果我们没有头⽂件⽽只有源⽂件,并且在源⽂件⾥并没有void hello();这样的语句,那么这个函数的声明和定义就同时发⽣了,此时如果我们在原⽂件⾥想要调⽤函数hello(),你调⽤的代码必须在函数定义之后。

其实上⾯的要点只在于⼀句话:使⽤变量之前必须声明,声明可以有多次,⽽定义只能有⼀次。

变量名词解释答

变量名词解释答

变量名词解释答变量是计算机程序中用于存储数据的一种命名空间,它是一个标识符,可以唯一地表示一个特定的数据值。

在程序中,变量可以用于存储和操作各种类型的数据,包括数字、字符、文本、列表、对象等。

变量名定义了变量在程序中的标识符,它是一个由字母、数字和下划线组成的字符串。

变量名需要遵循一定的命名规则,如不能以数字开头,不能使用关键词作为变量名,区分大小写等。

通过给变量赋值,可以将一个数据值存储在变量中。

这样在程序的其他地方就可以使用这个变量来获取或修改其中的值。

通过变量的引用,可以实现对同一个数据的多次访问和使用。

除了存储数据,变量还可以用于控制程序的执行流程。

在条件语句和循环语句中,可以通过使用变量来控制不同的分支和循环次数,从而实现程序的灵活性和可扩展性。

拓展:1.变量的作用域:变量的作用域指的是变量的可见范围,在不同的代码块中可以定义同名的变量,但它们的作用域是独立的。

常见的作用域有全局作用域和局部作用域。

2.变量的数据类型:不同编程语言支持不同的数据类型,如整型、浮点型、布尔型、字符串型等。

变量的数据类型决定了它能够存储哪些类型的数据以及可以进行哪些操作。

3.变量的声明和初始化:在使用变量之前,需要先声明该变量的类型和名称。

声明变量是为变量分配内存空间,而初始化变量则是给变量赋初值。

4.变量的命名规范:为了代码的可读性和可维护性,变量名应该简洁、具有描述性、符合命名规范,并且避免使用单个字母或含糊不清的命名。

5.变量的命名惯例:在不同编程语言和开发团队中存在一些变量命名的惯例,如使用驼峰命名法、下划线命名法等,可以提高代码的可读性和一致性。

C语言变量定义与声明的基本规则

C语言变量定义与声明的基本规则

C语言变量定义与声明的基本规则
在C语言中,定义和声明变量需要遵循一定的语法规则。

下面是一些基本示例和说明:
1.定义变量:
在C语言中,您可以使用int,float,double,char等关键字来定义不同类型的变量。

以下是几个示例:
int a; // 定义一个整数变量a
float b; // 定义一个浮点数变量b
char c; // 定义一个字符变量c
2.声明变量:
变量的声明通常在程序开始时进行,以告诉编译器变量的名称和类型。

这是一种形式,你也可以在使用变量之前声明它。

以下是几个示例:int a; // 声明一个整数变量a
float b; // 声明一个浮点数变量b
char c; // 声明一个字符变量c
然后,你可以在程序的任何地方使用这些变量。

例如:
a = 10; // 给整数变量a赋值10
b = 3.14; // 给浮点数变量b赋值3.14
c = 'A'; // 给字符变量c赋值'A'
注意:变量可以在其作用域内被重复定义和声明。

例如,在一个函数内部定义的变量只在该函数内部可见,但在函数外部定义的变量在整个程序中都可见。

这就是为什么我们常常在main函数的开始部分定义所有变量。

什么是变量

什么是变量

什么是变量?变量(Variable)是编程中用于存储和表示数据的一种概念。

它们是在代码中用来引用和操作数据的命名存储空间。

变量可以存储各种类型的数据,例如数字、文本、布尔值、对象等。

以下是关于变量的一些重要方面:1. 声明变量:在使用变量之前,需要先声明它。

变量的声明告诉编程语言要为该变量分配存储空间,并给它一个唯一的名称。

声明变量通常涉及指定变量的名称和数据类型。

2. 变量名称:变量名称是用来标识变量的唯一标识符。

它们可以由字母、数字和下划线组成,但必须以字母或下划线开头。

变量名称应具有描述性,以便在代码中理解其用途和含义。

3. 数据类型:变量可以具有不同的数据类型,这决定了变量可以存储的数据种类和范围。

常见的数据类型包括整数(integers)、浮点数(floats)、布尔值(booleans)、字符串(strings)和对象(objects)。

在一些语言中,还可以使用动态类型或弱类型来允许变量在运行时更改其数据类型。

4. 赋值:变量通过赋值操作来存储数据。

赋值使用等号(=)将数据值分配给变量。

例如,`x = 5` 将整数值5 赋给变量`x`。

赋值操作将数据存储在变量的存储空间中,以便在代码中使用和引用。

5. 变量的值:变量的值是存储在变量中的数据。

可以使用变量的名称来访问和操作其值。

例如,`x = 5` 中的`x` 是变量的名称,可以使用`x` 来引用存储在变量中的整数值5。

6. 变量的作用域:变量的作用域是变量在代码中可见和可访问的范围。

变量可以具有全局作用域(在整个程序中可见)或局部作用域(仅在特定代码块或函数中可见)。

作用域规定了变量的生命周期和可访问性。

7. 变量的修改和更新:一旦变量被声明和赋值,可以通过赋予新值来修改变量的内容。

例如,`x = 5` 后可以使用`x = 10` 来将变量`x` 的值更新为10。

这使得变量可以在程序的不同部分存储不同的数据。

8. 变量的传递:变量可以作为参数传递给函数或方法,以便在函数内部使用。

变量的声明与定义

变量的声明与定义

变量声明和定义的区别我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)变量的声明有两种情况:1、一种是需要建立存储空间的。

例如:int a 在声明的时候就已经建立了存储空间。

2、另一种是不需要建立存储空间的。

例如:extern int a 其中变量a是在别的文件中定义的。

前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a 它既是声明,同时又是定义。

然而对于extern a 来讲它只是声明不是定义。

一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。

很明显我们在这里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:int main() {extern int A;//这是个声明而不是定义,声明A是一个已经定义了的外部变量//注意:声明外部变量时可以把变量类型去掉如:extern A;dosth(); //执行函数}int A; //是定义,定义了A为整型的外部变量外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。

系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。

对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。

所谓的“声明”,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。

声明变量和定义变量的区别是什么?

声明变量和定义变量的区别是什么?

声明变量和定义变量的区别是什么?
1.什么是定义,什么是声明
(1)在 C语⾔中,使⽤变量之前必须先定义变量。

所谓定义变量,就是编译器创建了⼀个变量,为这个变量分配⼀块内存并命名(变量名)。

例如,定义整型变量 a。

int a;
这条语句说明了 a是⼀个整型变量,编译器将为其分配⼀块⼤⼩为 int型数据所占的内存空间。

a没有被赋初值,它的初值默认为 0。

在定义的同时,也可以为其赋值进⾏初始化。

如:
int a=1;
这条语句不仅说明了编译器为 a分配了内存,还说明了在整型变量 a分配的内存中存储的值。

注意:
不应该在头⽂件中定义变量,因为⼀个头⽂件可能会被⼀个程序的许多源⽂件所包含。

(2)所谓声明,就是告诉编译器变量的类型,编译器并不为其分配内存,此变量已经定义过,故声明可以多次进⾏。

例如,声明外部变量a。

extern int a;
这条语句说明了 a是⼀个外部整型变量,并且它的存储空间是在程序的其他区域分配的。

extern置于变量前,以标⽰变量的定义在别的区域中,下⾯的代码⽤到的变量 a是外部的,不是本区域定义的,提⽰编译器遇到变量 a在其他区域中寻找其定义。

2.声明变量和定义变量的区别
(1)定义创建了变量,并为其分配内存;声明没有分配内存。

(2)⼀个变量在⼀定的区域内只能被定义⼀次,却可以被多次声明。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

变量声明和定义的区别
我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)
变量的声明有两种情况:
1、一种是需要建立存储空间的。

例如:int a 在声明的时候就已经建立了存储空间。

2、另一种是不需要建立存储空间的。

例如:extern int a 其中变量a是在别的文件中定义的。

前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a 它既是声明,同时又是定义。

然而对于extern a 来讲它只是声明不是定义。

一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。

很明显我们在这里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:
int main() {
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变量
外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。

系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。

对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。

所谓的“声明”,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。

extern 只作声明,不作任何定义。

(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。


用static来声明一个变量的作用有二:
(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。

(2)外部变量用static来声明,则该变量的作用只限于本文件模块。

相关文档
最新文档