ethereum(以太坊)(十一)--字节数组(二)
pragma solidity ^0.4.0;
contract test {
uint [5] T =[1,2,3,4,5] ;//固定长度的数组:可修改数组内值大小,不支持push,不可更改长度
/*
contract test {
uint [] T = new uint[](5); //ParserError: Expected identifier but got 'storage'
//全局数组,默认创建在storage中,无法创建在memory中,长度可修改
function setlength(uint aa){
uint [] memory a = new uint[](5);
bytes [] memory b = new bytes[](5);
//TypeError: Type bytes memory[] memory is not implicitly
//convertible to expected type bytes storage ref[] storage pointer.
//函数内创建数组,需要指定存储在memory中,a.length不可更改
//a.length = 10; // TypeError: Expression has to be an lvalue
a[2] = 5;
}
}
*/
function setValue(uint para){
T[0] = para;
}
/*
uint [] T =[1,2,3,4,5] ; //动态长度的数组:可修改数组内值大小,支持push,可更改长度
/*
uint [] T1 = new uint[](5);
constructor() public{
for (uint i;i<T1.length;i++){
T1[i] = i;
}
}
*/
function setlenth(uint para){
T.length = 6;
}
function addvalue(uint para){
T.push(3);
}
*/
function setValue1(){
T[0] = 10;
}
function getValue() constant returns(uint){
return T.length;
}
function get1Value() constant returns(uint){
return T[0];
}
}
pragma solidity ^0.4.0;
contract test {
//二维数组
uint [2][3] T = [[1,2],[2,3]];
/*
1,2
2,3
0,0
*/
uint [2][] T1 = new uint[2][](5);
/*[i][j] T.length = j
0,0
0,0
0,0
0,0
0,0
*/
function getlenth() constant returns(uint){
return T.length; //
}
function getlenth1() constant returns(uint){
return T1.length; //
}
function get1lenth() constant returns(uint[2][]){ //输出二维数组
return T1; //
}
}
pragma solidity ^0.4.0;
contract test {
function setValue() public{
g([1,2,3]); //uint8
//TypeError: Invalid type for argument in function call.
//Invalid implicit conversion from uint8[3] memory to uint256[3] memory requeste
g([uint(1),2,3]);
}
//uint 256
function g(uint[3] data){
}
uint [] x1 = [uint(1),2,3];
//storage:可变数组 memory:固定数组
function get1() public{
uint [] memory x = [uint(1),2,3];
//memory:可变数组 memory:固定数组
//在函数内部,memory类型的固定长度的数组不可直接赋值给storge/memory类型的可变数组
//TypeError: Invalid type for argument in function call.
//Invalid implicit conversion from uint8[3] memory to uint256[3] memory requested
}
function get1() public constant returns(uint[]){
return x1; //uint256[]: 1,2,3 == [1,2,3]
//uint [] memory x = [uint(1),2,3];
//TypeError: Invalid type for argument in function call.
//Invalid implicit conversion from uint8[3] memory to uint256[3] memory requested
}
pragma solidity ^0.4.0;
contract test {
bytes3 public b = 0x123456; //bytes3: 0x123456
byte[3] public b1; //b1=0x000000 可直接通过索引进行查询
bytes public b2= new bytes(3); //bytes: 0x000000 == byte[] public b3 = new byte[](3)
byte[] public b3 = new byte[](3); // 0x000000 可直接通过索引进行查询
/*
function setb() public{
b[0] =0x01;
}
*/
function setb1() public{
b1[0] =0x01;
}
function setb2(bytes aa)public {
for (uint i;i<aa.length;i++){
b2.push(aa[i]);
}
}
}
/*
总结:创建固定大小字节数组/可变大小字节数组
固定大小字节数组:
bytes0~bytes32:长度不可变,内容不可修改
byte[len] b :长度不可变,内容可以修改
可变大小字节数组:可直接通过索引进行查询
bytes b = new bytes(len) == byte[] b = new byte[](len)
特殊的可变字节数组:
string :bytes() 通过bytes转换,length获取长度,通过索引修改相应的字节内容
固定大小字节数组 -> 可变大小字节数组
bytes3 a;
bytes [] b = new bytes[a.length]
for (uint i;i<a.length;i++){
b[i] = a[i]
}
return b;
uint [5] T =[1,2,3,4,5] ;//固定长度的数组:可修改数组内值大小,不支持push,不可更改长度
uint [] T =[1,2,3,4,5] ; //动态长度的数组:可修改数组内值大小,支持push,可更改长度
uint [] T = new uint[](5); //ParserError: Expected identifier but got 'storage'
//全局数组,默认创建在storage中,无法指定在memory中,长度可修改
//函数内创建数组,需要指定存储在memory中,a.length不可更改
uint [] x1 = [uint(1),2,3] //[uint(1),2,3] = [1,2,3];
//storage:可变数组 memory:固定数组
*/
}
ethereum(以太坊)(十一)--字节数组(二)的更多相关文章
- ethereum(以太坊)(十一)--字节数组(一)
pragma solidity ^0.4.0; contract byte1{ /* 固定大小字节数组(Fixed-size byte arrays) 固定大小字节数组可以通过bytes1,bytes ...
- ethereum(以太坊)(一)
从这周开始,开始学习以太坊开发--solidity,开始决定往区块链方向发展,毕竟区块链技术应用广泛.一开始接触solidity开发语言不太习惯,毕竟一直在学习python语法,有很多都不能接受.有难 ...
- 创建自己的加密货币MNC——以太坊代币(二)
创建一个基于以太坊平台的分红币MNC,根据持有的代币数量,进行分红的算法.github地址: https://github.com/lxr1907/MNC 1.使用以太坊根据比例换购token MNC ...
- ethereum(以太坊)(四)--值传递与引用传递
contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...
- 以太坊开发教程(二) 利用truffle发布宠物商店 DAPP 到 以太坊测试环境Ropsten
1.环境安装 1) node安装 设置镜像地址: curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -下载安装 ...
- ethereum(以太坊)(基础)--容易忽略的坑(二)
pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modif ...
- ethereum(以太坊)(十二)--应用(二)__投票(基础总和)
编写应用合约之前,先弄清它的逻辑,有助于我们更好的部署合约 pragma solidity ^0.4.21; pragma experimental ABIEncoderV2; contract vo ...
- ethereum(以太坊)(十二)--应用(一)__集资(构造函数/映射)
pragma solidity ^0.4.4; contract funder{ //0xca35b7d915458ef540ade6068dfe2f44e8fa733c //0x14723a09ac ...
- ethereum(以太坊)(二)--合约中属性和行为的访问权限
pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal ...
随机推荐
- Entity Framework Many to Many Relation Mapping(Entity Framework多对多关系映射)
通常我们在做数据库设计时都会有两张表是多对多关系的时候,在数据库做多对多关系时候我们通常通过中间关联表来处理,那我们现在在EF中是如何处理的呢? 假设我们有如下关系,用户(User)包含多个角色(Ro ...
- Unity C# 使用JsonUtility读写Json文件
本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/7146731.html 今天,为大家分享一下unity上的Json序列化,应该一说到这个词语 ...
- 前端性能优化-Cookie
什么是Cookie Cookie可以理解成为浏览器内部存储数据的一个数据库,并会随请求一起被发送:Cookie以键-值对的形式存在.可以存储网站的一些数据,这部分数据不会随着浏览器关闭而被清除.如下图 ...
- MyEclipse 比较常用的快捷键
Ctrl+D: 删除当前行 Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编 ...
- 函数的返回值 return
布尔类型返回 return 0:返回假: return 1:返回真:
- WorkFlow 的 Xaml 中找不到引用类型
原来还是需要两步走. 1. 在refernece里面应用project或dll. 2. 在xaml的命名空间里面手动添加.
- Eclipse+ADT+Android SDK 搭建安卓开发环境(转)
要求 必备知识 windows 7 基本操作. 运行环境 windows 7(64位); eclipse-jee-luna-SR2-win32(32位);ADT-23.0.4 下载地址 环境下载 最近 ...
- [总结]SHAREPOINT - CAML列表查询(上)
首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...
- 数组模拟栈(C语言)
用数组模拟栈的实现: #include <stdio.h> #include <stdlib.h> #define STACK_SIZE 100 typedef struct ...
- Linux命令之查看日志等实时文件命令(less 、tail)使用
一.less的使用 1)less 文件名,即可快速打开文件 2)相关查看搜索 3)利用键盘向上向下箭头键盘上的向上和向下箭头,点击一次向下简单,文件内容往下读取一行:点击一次向上箭头,文件内容,往上 ...