storage和memory
memory:使用的是值传递,默认使用的是memory,传递的是值
storage:引用传递,传过来的是指针,后面一定要加上internal,private
pragma solidity ^0.4.;
contract Person {
string _name; //一个构造函数
function Person(string name) {
_name=name;
} function f() {
modify(_name)
} //如果是storage的话,指针传递,后面要加internal,或者是private类型,不能是public的类型,而且传进来的name长度是固定,不能直接给她赋值,可以修改这个name的某个值[0],[1]等吗
//传进来的是指针name,下面修改的话是可以修改name的值的
//我们传过来的形参默认是memory类型,这个memory类型分相当于是值传递,如果使用storage的话,相当于是使用的指针,指针的话是可以改变这个_name的值,并且执行name方法的时候,是可以看到这个_name改变之后的值
function modify(string storage name) internal{
bytes(name)[]='L'//传过来的第0个修改成大写,只能修改这个值的某个,不能全部比如name="yunxin"是不可以的 } //当执行f方法之前的话,如果传进的参会时是Li,执行f函数之后调用这个方法,那么这个首字母大写
//那么之后的值是li,在调用name就可以返回这个值出来
function name() constant returns (string) {
return _name;
}
} //当使用的是storage的时候,传进来的是name这个指针,而不是这个值
memory就是值传递,如果形参是memory的时候,它是传递,不会修改原来的值,默认使用的是memory
如果是storage类型的话,函数只能是internal,private,修改原来传过来的值,bytes(name)[1]='L'
storage:如果使用这个的话,这所在的方法(function)在外部是看不见的,通过另一个函数才可以调用,引用传递
pragma solidity ^0.4.;
contract Test{
string public _name;
function set(string name) public{
_name=name;
}
function set1(string a){
modify(a);
}
function modify(string b) internal{
_name=b;//修改_name整个值,修改完之后调用get方法,_name,就会是修改好的值了
}
function get()constant public returns(string){
return _name;
}
}
storage和memory的更多相关文章
- MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
http://dev.mysql.com/doc/refman/5.7/en/create-table.html You can use the TEMPORARY keyword when crea ...
- solidity中的memory和 storage详解
Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上.这里我会讲解一下关键字storage和memory的区别. storage的结构是在合约部署创建时,根据你的合约中状 ...
- interrupt & storage & DMA
1.Interrupt: The occurrence of an event is usually signaled by aninterrupt from either the hardware ...
- C++ TUTORIAL - MEMORY ALLOCATION - 2016
http://www.bogotobogo.com/cplusplus/memoryallocation.php Variables and Memory Variables represent st ...
- Cache memory power reduction techniques
Methods and apparatus to provide for power consumption reduction in memories (such as cache memories ...
- Vulkan Device Memory
1.通过下面的接口,可以获得显卡支持的所有内存类型: MemoryType的类型如下: 2.引用索引3对内存的描述 我们可以通过调用vkGetPhysicalDeviceMemoryPropertie ...
- BPF for storage:一种受外核启发的反式
BPF for storage:一种受外核启发的反式 译自:BPF for storage: an exokernel-inspired approach BPF主要用于报文处理,通过绕过网络栈提高报 ...
- uC/OS-II全局变量定义
/*************************************************************************************************** ...
- MYSQL数据表操作语句
1.查看某数据库中的表 SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern'] SHOW TABLES列举了给定数据库中的非TEMPORARY表.也可以使 ...
随机推荐
- 【翻译】WhatsApp 加密概述(技术白皮书)
目录 简介 术语 客户端注册 会话初始化设置 接收会话设置 交换信息 传输媒体和附件 群组消息 通话设置 ...
- vue的一些基本知识
配置webpack及vue脚手架工具: vue-cli 2 npm install webpack webpack-cli -g npm install vue-cli -g 搭建脚手架 vue ...
- 排序算法(sorting)
学习到的排序算法的总结,包括对COMP20003中排序部分进行总结,部分图片来自COMP20003 有部分内容来自http://www.cnblogs.com/eniac12/p/5329396.ht ...
- Thymeleaf的超链接与AJAX的跳转问题
//th:href :超链接<a th:href="@{/list}"></a>//可以在其他页面跳转yt <form id="msform ...
- Python——Django-form表单提交
一.提交的注意事项 1. form不是from,所有获取用户输入的标签都应该放在form里面, input并且必须要有name属性 2. action属性控制往哪儿提交,method一般都设置成pos ...
- OTZ%%%子谦。大佬
又上了节课...俩题 计算系数 组合数问题... 要不是大佬指点就只能阶乘暴力算了 (主要还是我忘了杨辉三角) 杨辉三角与组合数C有着千丝万缕的联系,在计算,使用方面相当方便. 先说计算系数 计 ...
- 洛谷P1608路径统计
题目 这个提示一个简单的最短路计数,除了用数组存上最短路的个数的做法以外,还有可以在得出最短路之后,搜索加剪枝的方法来通过该题. 可以反向搜索用A*的方法来通过,但是这个题的去重十分的恶心,需要一些玄 ...
- MT【316】常数变易法
已知数列$\{a_n\}$满足$a_1=0,a_{n+1}=\dfrac{n+2}{n}a_n+1$,求$a_n$ 解答:$\dfrac{a_{n+1}}{n(n+1)}=\dfrac{a_n}{n( ...
- Vue(二)简单入门
根据上一节搭建的hello-world工程(包含Router),用Webstorm打开,我们先运行一下工程. 界面如下 .. 我将在About里面介绍一下Vue的相关内容. 打开About.vue,修 ...
- usb描述符简述(二)
title: usb描述符简述 tags: linux date: 2018/12/18/ 18:25:23 toc: true --- usb描述符简述 转载自cnblog 具体描述符 https: ...