值传递
代码示例:
pragma solidity ^0.4.4;
contract Person {
uint _age;
function Person(uint age) {
_age = age;
}
function f() {
modify(_age);
}
function modify(uint age) {
age = 100;
}
function age() constant returns (uint) {
return _age;
}
}
结果:
说明:age是一个临时变量,当改变age时,_age不会发生变化。
引用类型
代码示例
pragma solidity ^0.4.4;
contract Person {
string _name;
function Person(string name) {
_name = name;
}
function f() {
modify(_name);
}
//默认memory:值传递,storage:引用类型传递。如果用storage,函数必须使用internal或public权限。
function modify(string storage name) internal {
//name = "hisee";
bytes(name)[0]="H";
}
function name() constant returns (string) {
return _name;
}
}
运行结果
说明:两个关键字memory和storage:默认memory:值传递,storage:引用类型传递。如果用storage,函数必须使用internal或public权限。