Ⅰ C語言數組裡面沒有定義的量默認是0嗎
有默認是0的。
數組是一種線性表數據結構。它用一組連續的內存空間,來存儲一組具有相同類型的數據。線性表就是數據排成像一條線一樣的結構。每個線性表上的數據最多隻有前和後兩個方向。其實除了數組,鏈表、隊列、棧等也是線性表結構。
而與它相對立的概念是非線性表,比如二叉樹、堆、圖等。之所以叫非線性,是因為在非線性表中,數據之間並不是簡單的前後關系。
第二個是連續的內存空間和相同類型的數據。正是因為這兩個限制,它才有了一個堪稱「殺手鐧」的特性:「隨機訪問」。但有利就有弊,這兩個限制也讓數組的很多操作變得非常低效,比如要想在數組中刪除、插入一個數據,為了保證連續性,就需要做大量的數據搬移工作。
(1)在演算法中不告訴初值默認為0嗎擴展閱讀
1、字元數組的初始化,最容易理解的方式就是逐個字元賦給數組中各元素。即把10個字元分別賦給str[0]到str[9]10個元素。
2、如花括弧中提供的字元個數大於數組長度,則按語法錯誤處理;若小於數組長度,則只將這些字元數組中前面那些元素,其餘的元素自動定為空字元。
Ⅱ c語言中定義變數不賦初值默認是多少
沒有加static,默認為auto 型,此時,不給初值,變數的初值是隨機的。
如果加了static不給初值,變數的初值是默認的 0。
其實不能說不賦初值就不行,對於局部變數,不賦初值的話,其實他裡面存的是一個隨機的值,誰也不知道他是多少,因此如果沒賦初值的情況下就使用它,程序是完全不可控的,如你的圖1,直接在while里去判斷b了,因此這個while判斷是不可控的。
【c語言】
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言訂定了一套完整的國際標准語法,稱為ANSI C,作為C語言最初的標准。
Ⅲ 在java中,我定義一個變數int i,不給它初始值,系統會不會自動給他一個初始值,比如說0那麼其他變數呢
在java中有這么一條規則,聲明在方法中的變數在使用時必須要初始化;
對於全局變數如果不賦值,會有默認值;
Ⅳ c語言中定義變數不賦初值默認是多少 是不是0
一般情況 沒有加static 默認為auto 型
此時 不給初值,變數的 初值是隨機的
但是 如果加了 static 不給初值 變數的
初值是默認的 0
指針也是一樣,其實 NULL 的值 就是 0
只是它不代表任何地址
謝謝
Ⅳ C語言中未初始化的變數的值是0么
全局變數 、靜態變數初始值為0,局部變數,自動變數初始值隨機分配。
定義局部變數,其實就是在棧中通過移動棧指針來給程序提供一個內存空間和這個局部變數名綁定。因為這段內存空間在棧上,而棧內存是反復使用的,所以說使用棧來實現的局部變數定義時如果不顯式初始化,值就是0的。
全局變數鏈接時已分配空間,程序運行時,操作系統的載入器,負責把鏈接器分配給全局變數的虛擬內存空間,映射到一個初始化為零的頁面,所以被初始化為零。全局和靜態的默認初始化都是靠載入機制實現的。另外:未初始化的符號在目標文件的bss段中,而初始化的符號在data段中。
(5)在演算法中不告訴初值默認為0嗎擴展閱讀
c語言變數的存儲類型,變數的初始化
存儲變數值的內存類型,有普通內存、運行時堆棧、硬體寄存器。默認存儲類型與變數聲明位置有關:像全局變數這樣代碼塊之外聲明的變數存儲在靜態內存中,不在堆棧里,程序執行期間始終存在;
代碼塊內聲明的變數默認存儲類型是自動的(automatic),稱為自動(auto)變數,存儲在堆棧中,執行到代碼塊時被創建,代碼塊執行完即被銷毀。
可以給自動變數加上關鍵字static,將它變為靜態存儲類型,它就會在程序運行期間一直存在,但是它的作用域是不變的,代碼塊外面還是不能用這個變數。
Ⅵ c語言的變數如果不付初值,變數的值是0么
不一定。是一個不確定的數。因為沒給變數付值,這個變數的地址空間可能已經存儲了數據而沒有清除。當你個變數付初值後,新付的值會將以前的數據覆蓋掉。所以變數如果不付初值,它是一個不確定的數。
Ⅶ 單片機編程 變數未賦初值 默認是0嗎
在keil中是這樣默認的,而且在主函數中可以不可while大循環,它本身就是執行到尾然後從頭開始。在proteus模擬就是這樣的。但是這並不是通用的,所以為了編程的嚴密和便與程序的移植,最好還是給予所希望的值。
Ⅷ c程序中,若未給變數賦初值,則變數的初值自動為0.對嗎
不是,會隨機輸出一個值。你可以做測試 main(){int a;printf("%d",a);}
Ⅸ C語言字元數組不賦初值是默認為'\0'還是隨機值
普通數組沒有賦初值,默認的數組元素值是隨機數,不是0。
如果在定義數組時,數據類型前面加上關鍵字static,數組變成了靜態數組;或者把數組定義在函數的外面,成為全局變數數組,這時數組元素的值自動賦值為0。
例子:
#includeint main(void)
{
int m = 0;
static int n;
int a = 5, b = 6, c = 7, d = 8;
int k = ((m = a>b) && (n = c>d))
printf("k = %d, m = %d, n = %d ", k, m, n);
return 0;
}
輸出結果為:k = 0, m = 0, n = 0;
當變數用static修飾,但是沒有賦初始值的時候,編譯器會自動給它賦值為0.但是如果不用static 只是 int n;這樣定義的話,這個值就是未知的,因為編譯器會給這個變數分配一塊4位元組的地址空間,這個地址裡面的值就是n的值。
(9)在演算法中不告訴初值默認為0嗎擴展閱讀
1、數組中的每個元素都有一個序號,這個序號從0開始,而不是從熟悉的1開始,使用數組元素時,指明下標即可。
2、數組下標必須是整數,取值范圍為 0 ≥ index > length。
Ⅹ 在單片機編程時那些unsigned int是不是可以不賦初值,都默認初值是0
在聲明變數時,是可以不賦初值的,而初始值都默認為0的。如果要求初始值不是0,那就得賦初值了。當然也可以在聲明時不賦初值,在程序使用變數時再賦初值也可以。
而且不只是unsigned int,只是聲明變數就可以不賦初值的。
但是,在子函數中使用局部變數時,要注意賦初值,因初始值不一定是0,如果要求初值是0,就得賦初值了,也可以在使用時再賦初值。
聲明是不賦初值,默認為0,這是有一段默認的程序段,完成內部RAM的清0,這要看匯編代碼才能看到。這段程序,用戶是看不到的。