若是你但願立刻開始學習以太坊DApp開發,能夠訪問匯智網提供的出色的在線互動教程:數組
若是在聲明合約變量時沒有使用memory關鍵字,Solidity會嘗試在storage中存儲這個變量。函數
根據Solidity首席工程師Chriseth的說法:「你能夠把storage想像成一個大數組,它有本身的結構,這個結構是由你的合約中的狀態變量所決定的,所以在運行時不能改變」。學習
這就是說,storage的結構是在合約部署建立時,根據你的合約中狀態變量的聲明,就固定下來了,而且不能在未來的合約方法調用中改變這個結構。可是,storage中的內容是能夠經過交易來改變的。這些交易調用所以將修改合約的狀態,這也是爲何合約中的變量被稱爲狀態變量的緣由。所以在合約層面聲明的一個uint8類型的storage變量, 它的值能夠修改成任何0-255之間的有效uint8值,可是該變量在storage結構中的位置始終不會變化。ui
若是你在合約函數中聲明變量時沒有使用memory關鍵字,那麼solidity將會嘗試使用storage結構,目前來說,這樣作能夠經過編譯,可是可能致使不可預期的結果。memory關鍵字告訴solidity應當在該函數運行時爲變量建立一塊空間,使其大小和結構知足函數運行的須要。3d
在合約層面你不能爲變量應用memory關鍵字。教程