中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solidity智能合約[42]-memory與storage相互轉換

發布時間:2020-06-11 00:47:34 來源:網絡 閱讀:584 作者:jonson_jackson 欄目:開發技術

memory 賦值 狀態變量

下面的例子說明了memory賦值給storage的情況。在test函數中,memory空間的變量s復制給了狀態變量stu。為值的拷貝問題。并且由于這兩個空間互不影響。因此修改變量的值不會影響到另一個變量的值。
當調用call函數時,返回100,"jonson"。s的修改不會影響變量stu。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pragma solidity ^0.4.23;
contract MemoryTostorage{

     struct student{
       uint grade;
       string name;
   }

   student stu;

   function test(student  memory s) internal{

       stu = s;
       s.name = "alice";
   }


   function call() returns(uint,string){

       student memory guy = student(100,"jackson");
       test(guy);
       return (stu.grade,stu.name);
   }
}

storage 賦值 memory

如下例,說明了storage復制給結構體 memory變量的情況。在test函數中,其實質是將s引用的狀態變量的值賦值給了guy。
變量guy不是存儲的引用,而是一個結構體空間。當調用call函數時,返回100,"jonson"。對于guy的修改不會影響到stu的修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
contract storageToMemory{

     struct student{
       uint grade;
       string name;
   }

   student stu = student(100,"jackson");

function test(student  storage s) internal{

   student memory guy = s;
   guy.grade = 50;
}

function call() public returns(uint,string){

   test(stu);

   return (stu.grade,stu.name);
}

memory 轉 memory

memory與memory之間的相互轉換是值傳遞。
在下面的例子中,當調用call函數時,在memory中開辟了結構體的三個實例空間a、b、c。賦值為值的拷貝。他們之間互不影響。
修改一個變量不會影響其他變量的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pragma solidity ^0.4.23;


contract memoryTomemory{
   struct student{
       uint grade;
       string name;
   }

   function test(student memory b) internal{
       student memory c = b;
       c.name = "jonson";
   }

   function call() returns(string){
       student memory a =  student(100,"olaya");
       test(a);
       return a.name;
   }
}
  • 本文鏈接: https://dreamerjonson.com/2018/11/23/solidity-42-memory-storage/

  • 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!

solidity智能合約[42]-memory與storage相互轉換

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景德镇市| 都安| 建瓯市| 永登县| 新宁县| 贵阳市| 汉寿县| 峨眉山市| 冕宁县| 高陵县| 商水县| 开平市| 铁力市| 富源县| 即墨市| 隆德县| 辰溪县| 徐水县| 仙桃市| 千阳县| 元江| 乐清市| 宾阳县| 榆社县| 三明市| 隆昌县| 林周县| 伊通| 江孜县| 临洮县| 巴青县| 那曲县| 长沙县| 浦东新区| 沭阳县| 商丘市| 望江县| 巴林右旗| 抚顺县| 奎屯市| 广河县|