Solidity中的两种类型传递:
- 值类型传递memory;
- 引用类型传递storage;
如果一个变量是值类型,那么当把它的值传给另一个变量时,是复制值,对新变量的操作不会影响原来的变量;如果该变量是引用类型,那么当它传值给另一个变量时,则是把该值的地址复制给新的变量。这样操作新变量也会导致旧变量的改变。
值类型:
布尔类型(bool)、整型(int)、地址类型(address)、定长字节数组(bytes)、枚举类型(enums)、函数类型(function);
如果一个变量是值类型,给它赋值时永远是值传递!
引用类型:
字符串(string)、数组(array)、结构体(structs)、字典(mapping)、不定长字节数组(bytes)
如果一个变量是引用类型,给它赋值时可以是值,也可以是引用,这决定于该变量是Storage类型还是Memory类型。
示例代码如下:
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.7;
contract storage_demo{
User adminuser;
struct User{
string name;
uint8 age;
string sex;
}
function setUser(string memory _name,uint8 _age,string memory _sex)public{
adminuser.name=_name;
adminuser.age=_age;
adminuser.sex=_sex;
}
function getUser()public view returns(User memory){
return adminuse

最低0.47元/天 解锁文章
835

被折叠的 条评论
为什么被折叠?



