solidity入门

Solidity 是以太坊智能合约开发的主要编程语言,支持多种数据类型,其中数组是一种非常常用和灵活的数据结构。在本教程中,我们将深入探讨 Solidity 中数组的各种类型、创建规则以及常见操作。

### 固定长度数组

固定长度数组在声明时指定了数组的长度,一旦创建后,其大小就不能更改。固定长度数组使用 `T[k]` 格式进行声明,其中 `T` 是元素类型,`k` 是数组长度。

```solidity
uint[8] array1;      // 8个uint类型的元素
bytes1[5] array2;    // 5个bytes1类型的元素
address[100] array3; // 100个address类型的元素
```---

### 可变长度数组

可变长度数组在声明时不指定长度,大小可以动态调整。可变长度数组使用 `T[]` 格式进行声明。

```solidity
uint[] array4;      // 可变长度的uint数组
bytes1[] array5;    // 可变长度的bytes1数组
address[] array6;   // 可变长度的address数组
bytes array7;       // 可变长度的bytes数组
```**注意**:`bytes` 是一个特殊的数组类型,不需要使用 `[]`。---


### 数组创建规则

- **动态数组在 memory 中的创建**:

uint[] memory array8 = new uint[](5); // 创建一个长度为5的uint数组
bytes memory array9 = new bytes(9);   // 创建一个长度为9的bytes数组
```

- **数组字面常数(Array Literals)**:

使用数组字面常数可以更直观地初始化数组。


g([uint(1), 2, 3]);

 ### 数组操作

数组提供了一系列有用的操作方法:

- **length**:获取数组的长度。- **push()**:向动态数组和 `bytes` 类型数组的末尾添加元素。- **push(x)**:向动态数组和 `bytes` 类型数组的末尾添加特定元素 `x`。- **pop()**:移除动态数组和 `bytes` 类型数组的最后一个元素。```solidity
array4.push(10);          // 向 array4 添加元素 10
array5.push(bytes1(2));   // 向 array5 添加 bytes1 类型的元素 2
array6.push(address(0x0000000000000000000000000000000000000003)); // 向 array6 添加地址
```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636259.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格,例子11.源码12.源码1效果截图 四、给表格添加动画效果,例子21.源码22.源码2的运行效果 五、结语六…

Linux文件系统 软硬链接

文章目录 文件背景知识磁盘文件磁盘物理结构磁盘存储结构对磁盘的存储进行逻辑抽象Boot BlockSuper blockData blocksInode TableBlcokBitmapinode BitmapGroup Descriptor Table 文件名和inode编号创建文件删除文件查找文件 软硬链接软链接硬链接查看文件信息stat命令取消软硬…

数据结构 -- 二叉树二叉搜索树

二叉树 二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子 重要的二叉树结构 完全二叉树(complete binary tree)是一种二叉树结构,除最后一层以外,每一层都必须填满,填充时要遵…

百科不全书之 docker记录

docker记录 1.参考文件2. Docker简介与虚拟机的区别 3. 安装Docker注意 Windows家庭版的要额外设置 4.使用5.docker与ROS 1.参考文件 参考视频:B站【GeekHour】Docker入门教程: 【GeekHour】30分钟Docker入门教程 2. Docker简介 Docker是一个用于构建运行 传送…

【智能算法】吉萨金子塔建造算法(GPC)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,S Harifi等人受到观古代遗迹构造启发,提出了吉萨金子塔建造算法(Giza Pyramids Construction, GPC)。 2.算法原理 2.1算法思想 GPC模拟了古埃…

Python 面向对象——1.基本概念

本章学习链接如下: 基本概念与语法 类(Class):定义了一组对象共有的属性和方法的蓝图。类是创建对象的模板。 对象(Object):类的实例。对象包含实际的数据和操作数据的方法。 属性&#xff0…

unity学习(89)——unity塞满c盘!--删除editor下的log文件

卸了一个视频后强制续命打开详细信息: 这个再往下找也是没用的! 显示隐藏文件夹后!执行如下操作! 30个g! 其中unity占23g editer占了21g 删除C:\Users\王栋林\AppData\Local\Unity\Editor下的log文件 恢复到之前的水…

Android AIDL接口

一.AlDI接口简介 AIDL(Android Interface Definition Language)是一种 IDL 语言,用于生成可以在 Android 设备上两个进程之间进行进程间通信(IPC)的代码。 通过 AIDL,可以在一个进程中获取另一个进程的数据…

详细剖析多线程4----锁策略(八股文/面试常考)

文章目录 前言一、常见锁策略(八股文)1.1乐观锁和悲观锁1.2轻量级锁和重量级锁1.3自旋锁和挂起等待锁1.4普通互斥锁和读写锁1.5公平锁和非公平锁1.6可重入锁和不可重入锁1.7总结 二、synchronized内部原理三、CAS四、JUC(java.util.concurrent) 的常见类4.1Callable 接⼝4.2Ree…

【LLM】LLM API 开发

文章目录 LLM API 开发LLM入门基本概念LLM API使用实名认证创建应用使用API Prompt Engineering思考总结 参考文章 什么是提示工程(Prompt Engineering)? ChatGPT Prompt 最佳指南一 LLM API 开发 LLM入门基本概念 Prompt Prompt 最初是 NL…

嵌入式物联网实战开发笔记-乐鑫ESP32芯片功能对比以及功能选型【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载: 链接:https://pan.baidu.com/s/1ATvRnAZvxkev-PJfd3EAPg?pwd4e33 提取码:4e33 2.1 初识 ESP32 ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC),支持 2.4 GHz Wi-Fi 和低功耗蓝牙 (…