1. c++静态局部变量初始化问题
//--------------这里的a是什么时候初始化的,怎么看不到
这里的a,没被初始化
对于全局变量,如果没初始化的值,C++,可能默认把它们清零。
而C语言,则不去管它。如下:
#include<stdio.h>
int i=1; // i 为全局变量,具有静态生存期。
void main(void)
{
static int a; // a为静态局部变量,具有全局寿命,局部可见
//--------------这里的a是什么时候初始化的,怎么看不到
int b=-10; // b, c为局部变量,具有动态生存期。
int c=0;
void other(void);
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
c=c+8; other();
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
i=i+10; other();
getchar();
}
void other(void)
{
static int a=2;
static int b;
// a,b为静态局部变量,具有全局寿命,局部可见,只第一次进入函数时被初始化。
int c=10; // C为局部变量,具有动态生存期,每次进入函数时都初始化。
a=a+2; i=i+32; c=c+5;
printf("---OTHER---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
b=a;
}
输出:
---MAIN---
i:0 a:-10 b:0
---OTHER---
i:4 a:0 b:15
---MAIN---
i:0 a:-10 b:8
---OTHER---
i:6 a:4 b:15
2. c#3.0中,var关键字有什么作用,麻烦各位高手教我下,谢谢
隐式类型,隐式类型实际上等同于强类型,具体由编译器确定是哪个类型(所以必须在定义时初始化-一但初始化完成类型就定了),当你无法确定自己用的是什么类型(或者说你用的是一种在任何地方都没有声明的类型),就可以使用VAR,类似 OBJECT ,但是效率比OBJECT高,他和强类型效率是一样的,而且和object一样灵活,但是需要注意var必须是局部变量。
3. javascript中如何初始化数组对象
直接new一个Array就可以了。
4. var a=function和function a有什么区别
//代码一:
a(1);//执行这个会报错
vara=function(index){
alert(index);
}
a(2);//执行这个不会报错
//代码二:
a(1);//执行这个不会报错
functiona(index){
alert(index);
}
a(2);//执行这个不会报错
原因:JavaScript 函数和变量声明的“提前”(hoist)行为。
区别一:代码一,加载js 代码之后 a 被 “提前",但是 function 里面的具体内容不会被提前。就是在调用 的时候就会去初始化 function 里面的代码块。代码二:加载的时候就 “提前”了。
//代码一:js作用域污染
functiona(){//functionstatement
return'1';
}
alert(a());//alerts'3'
functiona(){
return'3';
}
//代码二:
vara=function(){//functionexpression
return'1';
};
alert(a());//alerts'3'
a=function(){
return'1';
};
强烈推荐看下 :
http://www.hu.com/question/19878052