變數的一切都設定好之後接下來就是要利用它了,這就是它的初始化和賦值。
0.1.4.0 賦值
賦值是在程式開始執行之後完成,賦值動作屬於程式完成。
0.1.4.1 初始化
初始化是程式在執行前由系統將變數值進行賦值
為了更好區分他們兩個,請看下面的例子:
int a;\\這個屬於變數定義宣告(簡稱定義)且不做初始化。
int a=
1;\\這個屬於系統初始化,系統首先申請變數a,並且將這個單元放置初始值1。
int a; a=b;\\屬於程式中的賦值,程式執行時取變數b中的值放入a,並沒有初始化的內容在內。
除此之外初始化還有一些額外的規則:
1、具有靜態儲存器期限的變數的初始化必須是常量。
2、如果變數具有自動儲存許可權,那麼它的初始化不需要是常量。
3、包含在括號中的陣列、結構或聯合的初始化必須只包含常量表示式,不允許有變數或函式呼叫。
4、自動型別的結構或聯合的初始化可以是另乙個結構或聯合。
0.1.4.2 未初始化未賦值
1、具有自動儲存期限的變數沒有預設的初始值。不能**自動變數的初始值,而且每次變數變為有效時值可能不同。
2、具有靜態儲存期限的變數預設情況下得值是零,用malloc分配的記憶體是簡單的給位元組的位置零(也可以說沒有型別可言),而靜態變數不同於此,它是基於型別的正確初始化,即整型變數初始化為0,浮點變數初始化為0.0,而指標則初始化為空指標。
初始化與賦值之間的區別
由於在內建型別中,初始化和賦值不進行區分並不會造成很大的影響,所以讓我很大程度上忽略了他們的差別。直到c primer中對於建構函式提出了一句話,建構函式有乙個初始化部分和乙個函式體,在乙個建構函式中,成員的初始化是在函式體執行之前完成的,且按照它們在類中出現的順序進行初始化。讓我第一次開始思考初始...
c語言變數賦值,初始化
陣列變數為全域性變數,或被部分初始化,均會出現這種情況。c語言中,變數在沒有顯式初始化時,區分變數型別,有如下幾種情況 1 全域性變數,和靜態區域性變數,未初始化時值預設為0.無論是陣列還是變數,都是如此。2 區域性變數,初始值為隨機值。3 陣列類區域性變數,當被部分初始化時,未被初始化部分,值預設...
vector的初始化以及賦值方法
include include intmain cout endl v2.assign v1.begin v1.end 利用assign函式將v1的值賦值到v2裡面 cout v2 for auto v v2 cout endl v3.assign 7 4 v3初始化,7個4 cout v3 for...