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(以太坊)(十一)--字节数组(二)的更多相关文章

  1. ethereum(以太坊)(十一)--字节数组(一)

    pragma solidity ^0.4.0; contract byte1{ /* 固定大小字节数组(Fixed-size byte arrays) 固定大小字节数组可以通过bytes1,bytes ...

  2. ethereum(以太坊)(一)

    从这周开始,开始学习以太坊开发--solidity,开始决定往区块链方向发展,毕竟区块链技术应用广泛.一开始接触solidity开发语言不太习惯,毕竟一直在学习python语法,有很多都不能接受.有难 ...

  3. 创建自己的加密货币MNC——以太坊代币(二)

    创建一个基于以太坊平台的分红币MNC,根据持有的代币数量,进行分红的算法.github地址: https://github.com/lxr1907/MNC 1.使用以太坊根据比例换购token MNC ...

  4. ethereum(以太坊)(四)--值传递与引用传递

    contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...

  5. 以太坊开发教程(二) 利用truffle发布宠物商店 DAPP 到 以太坊测试环境Ropsten

    1.环境安装 1) node安装 设置镜像地址: curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -下载安装 ...

  6. ethereum(以太坊)(基础)--容易忽略的坑(二)

    pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modif ...

  7. ethereum(以太坊)(十二)--应用(二)__投票(基础总和)

    编写应用合约之前,先弄清它的逻辑,有助于我们更好的部署合约 pragma solidity ^0.4.21; pragma experimental ABIEncoderV2; contract vo ...

  8. ethereum(以太坊)(十二)--应用(一)__集资(构造函数/映射)

    pragma solidity ^0.4.4; contract funder{ //0xca35b7d915458ef540ade6068dfe2f44e8fa733c //0x14723a09ac ...

  9. ethereum(以太坊)(二)--合约中属性和行为的访问权限

    pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal ...

随机推荐

  1. Xtrareport二之固定数据绑定

    已经了解了XtraReport的初步用法,现在在进一步了解数据绑定 我们还是先不整高深的,先来个写死的,让我们的数据库可以通过报表呈现先 1. 准备 还在上节基础上,选中设计器report的page  ...

  2. JavaScript 函数 (function)

    //声明(有参数.有返回值) function fun() { var name = '小黑'; ) { name = arguments[]; //接受参数 } alert(name); retur ...

  3. oracle用分隔符分割字段,并转为多行

    作用:当判断是否满足条件,而条件字段又是用","分割的时候. 如果数据库中一个字段插入数据,并且以","分割.有点像行转列 4804510101,4946645 ...

  4. hystrix应用介绍(三)

    hystrix提供了两种隔离策略:线程池隔离和信号量隔离.hystrix默认采用线程池隔离. 1.线程池隔离 不同服务通过使用不同线程池,彼此间将不受影响,达到隔离效果. 例如: 我们可以通过andT ...

  5. Socket网络通信之NIO

    Socket网络通信之NIO NIO:new io ,java1.4开始推出的可非阻塞IO. java.nio 包,可解决BIO阻塞的不足 但比BIO学习.使用复杂. 可以以阻塞.非阻塞两种方式工作. ...

  6. kafka存储机制以及offset

    1.前言 一个商业化消息队列的性能好坏,其文件存储机制设计是衡量一个消息队列服务技术水平和最关键指标之一.下面将从Kafka文件存储机制和物理结构角度,分析Kafka是如何实现高效文件存储,及实际应用 ...

  7. 从0到1构建适配不同端(微信小程序、H5、React-Native 等)的taro + dva应用

    从0到1构建适配不同端(微信小程序.H5.React-Native 等)的taro + dva应用 写在前面 Taro 是一套遵循 React 语法规范的 多端开发 解决方案.现如今市面上端的形态多种 ...

  8. Vue-Cli 3 引入 SCSS 全局变量

    首先创建一个全局变量文件 global.scss $theme-color: #efefef; 编辑vue.config.js module.exports = { // ... css: { loa ...

  9. MySQL之my.cnf配置

    ####################配置文件开始################### # For advice on how to change settings please see # ht ...

  10. <Android 基础(十三)> shape

    介绍 简单来说,shape就是用来在xml文件中定义形状,代码解析之后就可以当做Drawable一样使用 官方说明 关于shape定义的drawable 文件位置:res/drawable/filen ...