Skip to content

值类型与引用类型

Solidity 中,有值类型和引用类型两种基本数据类型。

值类型(Value Types

值类型在赋值时会在内存中创建新的数据,不会影响原有数据,常见的值类型包括 bool、整型、地址、字节数组等。

以下是一个 Solidity 代码示例,演示了如何定义一个值类型的变量:

solidity
pragma solidity ^0.8.0;

contract ValueTypes {
    // 定义一个整型变量
    uint256 myInt;

    // 定义一个地址变量
    address myAddress;
}

引用类型(Reference Types

引用类型在赋值时会在内存中创建一个指向原有数据的指针,修改时会影响原有数据,常见的引用类型包括数组、结构体、映射等。

以下是一个 Solidity 代码示例,演示了如何定义一个引用类型的变量:

solidity
pragma solidity ^0.8.0;

contract ReferenceTypes {
    // 定义一个动态数组
    uint256[] myArray;

    // 定义一个结构体
    struct MyStruct {
        uint256 myInt;
        string myString;
    }

    // 定义一个映射
    mapping (address => uint256) myMapping;
}

Solidity 中,为了避免造成过多内存开销,应该尽可能使用值类型,而不是引用类型。