变量声明

变量声明告知编译器变量的外表特征,包含函数类型、函数名、参数列表和一个分号。例如:

int a;

可以声明变量 a就一个整数,这符合上面的逻辑。但这就产生了一个矛盾:这段带码有足够的信息让编译器为整数a分配空间,而且编译器也确实给整数a分配空间,要解决这个矛盾,对于C/C++要一个关键字来说明“这只是一个声明,它的定义在别的地方”。这个关键字是extern,它表示变量是在文件以外定义的,或文件后面部分才定义。

下面是一些声明的example:

//declare.cpp
//delartaion&definition examples
#include <iostream>
using namespace std;

extern int i;	//Declaration without definition
extern float f(float);	//Function declaration
float b;	//Declaration  and definition

float f(float a){    // defintion
	cout<<"a="<<a<<endl;
	return a+1.0;
}

int i;
int h(int x){    //Declaration and definition

	cout<<"x="<<x<<endl;
	return x+1;
}

int main(){
	b =1.0;
	i =2;
	cout<<"f(b)="<< f(b)<<endl;
	cout<<"h(i)="<< h(i)<<endl;
}///:~

测试结果如下所示:

关于程序设计基石与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.

时间: 2024-10-17 23:04:44

变量声明的相关文章

javascript变量声明和作用域提升

以前的知识总是忘,遇到代码又看不懂.要再复习一下,顺便记录一下. 1 add(1,2); 2 function add(a,b){ 3 alert(a+b); 4 } 代码能输出3,为什么不是按顺序执行?应该是  //add is not defined ... javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 也就是说,function add(a,b){alert(a+b)}是一个函数声明,告诉我们有

JavaScript 变量声明提升

JavaScript 变量声明提升 一.变量提升的部分只是变量的声明,赋值语句和可执行的代码逻辑还保持在原地不动 二.在基本的语句(或者说代码块)中(比如:if语句.for语句.while语句.switch语句.for...in语句等),不存在变量声明提升 三.函数声明会提升,但是函数表达式的函数体就不会提升 1 fun(); // hello 2 function fun(){ 3 console.log("hello"); 4 } 5 // -------------- 6 //

javascript中变量声明要早于赋值

javascript中变量声明要早于赋值:这里只做简单的现象介绍,具体不做深究,先看一段代码实例: var webName="蚂蚁部落"; document.write(webName); 对于这段代码应该没有任何问题,输出结果是:蚂蚁部落.再来看一段代码: document.write(webName); var webName="蚂蚁部落"; 按照代码是顺序执行的理论,以上代码应该会报错才对,但是这里输出结果却是:undefined.这说明在执行输出之前,变量已

关于Javascript没有块级作用域和变量声明提升

Javascript是没有块级作用域的,在语句块中声明的变量将成为语句块所在代码片段的局部变量.例如: 1 if(true){ 2 var x=3; 3 } 4 console.log(x); 结果输出3. 再如: 1 var x=5; 2 3 function a(){ 4 if(!x){ 5 var x=10; 6 } 7 console.log(x); 8 } 9 a(); 结果是10.因为变量声明的提升,原理是这样的,举个例子: 1 if(a==undefined){ 2 alert("

变量声明和定义的区别

我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益) 变量的声明有两种情况: 1.一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间. 2.另一种是不需要建立存储空间的. 例如:extern int a 其中变量a是在别的文件中定义的. 前者是“定义性声明(defining declaration)”或者称为“定义(definition

变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化

一.变量声明和变量赋值: if (!("a" in window)) { var a = 1; } alert(a);//a为? 你可能认为alert出来的结果是1,然后实际结果是"undefined".要了解为什么,我们需要知道JavaScript里的3个概念: 1.所有的全局变量都是window的属性,语句 var a = 1;等价于window.a = 1; 可以用如下方式来检测全局变量是否声明: "变量名称" in window 2.声明

ES6变量声明 ------ let and const

在ES5中,声明变量的方式只有一种, 那就是var, 如var mes ="hello", 但是用var声明变量有一个比较奇怪的地方,就是变量声明的提升,比如在函数中,无论我们声明变量的代码写在什么地方,它都是在函数顶部声明变量,在全局作用域下,则是在script标签顶部声明变量,这就有点郁闷了,因为按照我们正常的思维方式,我们代码是一行一行写的,只有用到某个变量的时候,才进行声明变量,并且声明变量后,只有它后面的代码才可以用,现在成了,我们在后面声明变量,在前面也可以用了,这不符合我

js变量声明提升

1.变量提升 根据javascript的运行机制和javascript没有块级作用域这个特点,可以得出,变量会声明提升移至作用域 scope (全局域或者当前函数作用域) 顶部的. 变量声明提升至全局域 console.log(a); // undefined var a ="Hi"; 相当于 var a; // 变量提升到全局作用域 console.log(a); // 已声明变量a,但未初始化,固为undefined a="Hi"; 变量声明提升至当前函数域 v

javascript变量声明提升(hoisting)

javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看一段代码 1 2 3 4 5 var v = "hello"; (function(){   console.log(v);   var v = "world"; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v.代

Javascript变量声明

Javascript变量声明 JavaScript中即可以使用双引号声明字符串,也可以使用单引号声明字符串.主要是为了方便和html集成,避免转义符的麻烦. JavaScript是动态类型,因此 var i=10;i='test'是合法的. var m,n,x,y=10;也是合法 判断变量是否可用 Javascript中,要用到一个变量计算的时候,首先要判断变量不是undefined也不是null 有两种判断方法,但是有区别,推荐第二种. 第一种: <script type="text/j