solidity基礎入門知識(二)值型別與引用型別

2021-08-15 15:41:56 字數 1669 閱讀 6794

今天是大年三十,第一次不在家過年,別有一番滋味!

我們先來看看有哪些型別屬於值型別,哪些屬於引用型別。

值型別包含:

有其他語言開發經驗的童鞋都知道,值型別傳值時,會臨時拷貝乙份內容出來,而不是拷貝指標,當你修改新的變數時,不會影響原來的變數的值。

例如:

int a = 100;  // a == 100

int b = a; // b == 100,a == 100

b = 300; // b == 300,a == 100

由上面的資料看,執行b = a時,會將a的值臨時拷貝乙份傳給b,所以當你修改b時,其實與a沒任何關係。

引用型別包含:

引用型別,賦值時,我們可以值傳遞,也可以引用即位址傳遞,如果是值傳遞,和上面的案例一樣,修改新變數時,不會影響原來的變數值,如果是引用傳遞,那麼當你修改新變數時,原來變數的值會跟著變化,這是因為新就變數同時指向同乙個位址的原因。

引用型別中如何模擬值傳遞?

值傳遞偽**(以ios中可變字串nsmutablestring為例子):

//建立乙個可變的字串name

nsmutablestring *name = [@"liyuechun" mutablecopy]; // name == "liyuechun"

nsmutablestring *name1 = [name copy]; //name1 == "liyuechun", name == "liyuechun"

name1 = "liyc1215"; //name1 == "liyc1215",name == "liyuechun"

引用型別中如何模擬引用傳遞?

//建立乙個可變的字串name

nsmutablestring *name = [@"liyuechun" mutablecopy]; // name == "liyuechun"

nsmutablestring *name1 = name; //name1 == "liyuechun", name == "liyuechun"

name1 = "liyc1215"; //name1 == "liyc1215",name == "liyc1215"

在本節中,主要是讓大家知道solidity程式語言中有哪些是值型別,哪些是引用型別,以及值型別和引用型別的簡單區別。【ps:solidity值型別中,賦值時我們始終記住傳的是值,改變新變數,不會影響原來的邊來幹值,而引用型別就有兩種可能,

var型別:

var並不是表示動態型別,而是讓書寫更簡單,乙個值在分配給var變數時,其型別就已經確定了,如果要賦值給其他型別,仍要進行強制型別轉換。

例子:在var x = 1 / 4中,x的實際型別是ufixed0x8。而在var x = 1/ 3中,型別會是ufixedox256,因為這個結果表示是無限的,所以他只能是無限接近。

**自:孔壹學院)

solidity基礎知識

自己學習會參考到的一些基礎知識,記錄一下,主要包括 call 方法 delegatecall send 與fallback keccak payable宣告的函式可以從呼叫者那裡接受ether,如果傳送方沒有提供ether,則呼叫可能會失敗。也就是說乙個函式宣告為payable,那麼就只能收取eth...

solidity基礎入門知識(一)整型和位址

1.solidity檔案的擴充套件名為.sol 2.pragma solidity 0.4.0 表示源程式在大於等於0.4.0版本的編譯器中可以正常工作,在大於等於0.5.0版本的編譯器中無法工作。3.資料型別 solidity是靜態語言,所有變數在定義的時候需要定義好資料型別 1 整數 常用的無符...

python入門(二)基礎知識

在前乙個章節,我介紹了如何搭建乙個比較友好的python學習環境,在這一節中我將快速過一遍基礎知識,為實際應用展開鋪墊 1 與c c 不同的是,python的 塊不使用 而是使用縮進來寫。並且縮排的空格數必須統一否則會報錯。2 在python中單行注釋採用 多行注釋採用 或 3 在python中,一...