迷茫2017-04-17 14:25:05
變數初始化就是為變數定義一個初始值,意思是在程式被載入到記憶體的時候,這個變數的位址所存放的值就已經確定了。
而賦值在程式中體現為一條指令,在程式被載入到記憶體後,一個未初始化變數的位址存放的仍然是先前的內容,並不會清除,賦值就是一條將值寫入記憶體的指令。
靜態變數是全域性的,寫在可執行檔中的全域區,隨著可執行檔被載入到記憶體中,靜態變數的值就確定了,未初始化的靜態變數可能會被初始化為0。
局部變數一般是處在堆疊空間和堆空間中,這部分是載入到記憶體之後由系統分配的,系統不會為你做清理工作,因此如果你沒有初始化,記憶體中就是之前的值。
迷茫2017-04-17 14:25:05
初始化是變數例如$name='張三' 這個變數初始化,變數最最原始的值,也就是首次賦值
賦值的意思是程式在運行中必須給$name='李四' 再次賦值,無論初始化的時候$name是什麼值
大家讲道理2017-04-17 14:25:05
變數的初始化就是在定義變數的時候給變數分配記憶體空間的同時給它一個具體的值,靜態變數必須初始化,而自動變數初始化是可選的。
變數的賦值就是修改一個已定義的變數的值,自動變數是可賦值的,靜態變數不可賦值,靜態變數值在定義的時候就確定下來,自動變數在定義的時候如果未初始化,且之後也未賦值,是不可以使用的。
黄舟2017-04-17 14:25:05
第1次給一個變數一個值就是初始化,第2、3.....次就是賦值了。先有初始化,再有賦值的。靜態類型和自動類型的變數差異就是變數儲存的空間不一樣了。自動變數一般是儲存在堆疊中,靜態類型的話就是儲存在全域/靜態變數區裡面啦。