pragma solidity ^0.4.0;
contract MemoryTest{
uint[] arrx;//在区块链上定义的状态变量uint[]
uint[] arrw = [1,2,3,4,5,6];
function test1(uint[] arry) public returns(uint ){
//arry在函数上(内存上)-不坚挺,用完就会丢弃
arrx = arry;//将内存的arry拷贝给区块链上的arrx变量;
//当在函数体内部定义了一个可变长度的数组时、实际上默认的类型是storage类型,她指向区块链上
//的arrx,所以当修改Z的元素时、实际上操作的是区块链上的arrx;
uint[] storage Z = arrx;
//通过指针实际上修改了区块链上的arrx的值
Z[0] = 48;
//通过指针实际上修改了区块链上arrx的长度、说明Z和arrx其实是一样的、操作Z的时候会改变arrx的值
Z.length = 48;
}
//返回一个arrx\arrw的第一个元素
function test2() public returns(uint){
return arrx[0];
//return arrw[0];
}
//返回arrx\arrw长度
function test3() public returns(uint){
return arrx.length;
//return arrw.length;
}
//返回arrw的第六个位置的值
function changeIt()public returns(uint){
arrw[5] = 48;
return arrw[5];
}
//查看数组arrx\arrw
function GetIt()public returns(uint[]){
//return arrw;
return arrx;
}
}