ethereum(以太坊)(四)--值傳遞與引用傳遞
阿新 • • 發佈:2018-11-13
pragma solidity ^0.4.0; // priveta public internal contract Test{
uint public _age; function Test(uint age){ _age = age; } function f(){ modify(_age); } function modify(uint age){ age =100; } //function age() constant returns(uint){// return _age; //} } contract Person{ string _name; function Person(string name){ _name = name; } function f(){ modify(_name); } function modify(string storage name) internal { //name = 'eilinge'; //memory:值傳遞__https://pan.baidu.com/s/1cPn4aoXKeYZzD2cG15s28A,storage+internal+bytes():
//引用傳遞__https://pan.baidu.com/s/1TO-1iAutc317VWp5iTS11gbytes(name)[0] = 'L'; } function name() constant returns(string){ return _name; } }
值型別(Value Type) 布林(bool) 整型(integer) 地址(address) 定長位元組陣列(fixed byte arrays) 有理數和整型(Rational and Integer,String literals) 列舉型別(Enums) 函式(Functions Types) 值型別傳遞時,會臨時拷貝一份內容出來,而不是拷貝指標,當你修改新的變數時,不會影響原來的變數的值 引用型別(Reference Types) 不定長位元組陣列(bytes) 字串(string) 陣列(Array) 結構體(Struts) 引用型別,賦值時,可以值傳遞,也可以引用(地址傳遞) 值傳遞: 當你修改新的變數時,不會影響原來的變數的值 引用傳遞: 當你修改新變數時,原來變數的值會跟著變化,這是因為新/舊變數指向同一個地址的原因。