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