可在程序的編譯階段得到初始值0
⑴ 如果在程序中定義靜態變數和全局變數時,未明確指明其初始值,那麼它們可以在程序編譯階段自動被初始化為0
對的,全局的因為內存會被清0 所以其值就是0
⑵ static int a[3][4];則數組a中各元素()
選D,static變數編譯為db 0的匯編語句,從編譯開始就是0值。
⑶ 若有說明:int a[3][4];則數組a中各元素是()
不能得到確定的初值。int a[3][4]定義了數組但未賦初值,系統為所定義的數組在內存中開辟了已連續的存儲單元,但這些存儲單元中沒有確定的手液值。
若數組中的數據都是後來獲取並且數據過多時,其中的元素個數可表示為count = sizeof(a)/sizeof(a[0]),在執行循環畢漏物語句中條件判斷語句時,這樣更方便。
若定義為全局變數,若不賦值,則默認所有元素為0;若定義為局部變數,若不賦值,則默認元素值均為隨機(垃圾值)。
(3)可在程序的編譯階段得到初始值0擴展閱讀
定義數組的知識點:
1、若僅初始化其中部分元素,則其餘值均為0;
2、一維數組不能定義為a[],必須給長度,二維數組不能定義為a[][],必須給列賦長度如a[][10];
關於數組的各種表示的含義:
1、一維數組:
&a[0]:數組首元素地址;
&a:數組首元素地址;
&a:整個數組的地址;搜則
2、二維數組:
&a[0][0]:首行首元素的地址;
a[0]:首行首元素;
&a[0]:首行地址;
a:首行地址;
&a:整體數組的地址;
⑷ 若在函數內定義形參數組a:int a[3][4];則數組a中各元素可在程序的編譯階段得到初值0。
這是不對的
若沒有說明,編譯器是不會自己對數組賦值的
⑸ 在C語言中,為什麼定義變數的時候總是初始化為0呢該怎麼理解。
因為變數是可以變動的,定義一個變數不初始化時,變數會是一個隨機數,進行計算了的時候,就會引用那個隨機數進行計算,會有誤差。
⑹ C語言 數組初始化為0 編譯器是如何實現的
在編譯時,變數分成兩種形式存放,一種叫初始化段,一種叫未初始化段
如果你定義數組沒有給出賦值語句中的初始值,該數組將保存在未初始化段;否則放入初始化段
編譯器將記錄初始化段中的數組起始地址、數據類型、元素個數,初始化數據在常量區的起始地址,數據個數
在程序運行時,系統先申請各段內存棚游,然後針對初始化段進行初始化工作,方法是從常量段中取出初始化數據給你有初始值的變數賦值,假設你程序開設10個單元的數組,如果搏拍沒有優化選項,常量段中將保存10個鏈銀銷0用來初始化這個數組,如果有優化選項,可以合並相同常量,則僅保存一個0,並用這個0來初始化所有10個數組元素。
⑺ C語言程序中定義的變數要取得一個初始值由什麼辦法
1)全局變數在聲明時,可以為其賦初始值,如int MAXN=999;
沒有為全局變數賦初始值的,其初始純並值默認為0。
2)局部變數在聲明時,可以為其賦初始值,渣耐如int MAXN=999;
數如褲春組元素在初始化時,未明確賦值的部分,均有初始值為0。例如:
int a[10]={1,2};
mj a[0]=1,a[1]=2,從a[2]~a[9]均為0。
3)可以在聲明後的語句中,為變數賦初始值。如:
int a[10],i;
for(i=0;i<10;i++)
a[i]=i+1;
⑻ 若有說明:int a[3][4];則數組a中各元素( ).
不能得到確定的初值。int a[3][4]定義了數組但未賦初值,系統為所定義的數組在內存中開辟了已連續的存儲單元,但這些存儲單元中沒畢漏物有確定的值。
若數組中的數據都是後來獲取並且數據過多時,其中的元素個數可表示為count = sizeof(a)/sizeof(a[0]),在執行循環語句中條件判斷語句時,這樣搜則更方便。
(8)可在程序的編譯階段得到初始值0擴展閱讀:
關於數組的各種表示的含義:
1、一維數組:
&a[0]:數組首元素地址;
&a:數組首元素地址;
&a:整個數組手液的地容址;
2、二維數組:
&a[0][0]:首行首元素的地址;
a[0]:首行首元素;
&a[0]:首行地址;
a:首行地址;
&a:整體數組的地址;
⑼ C語言,沒辦法,要交作業(3)
A..B..C..D.....................頭暈~