Closed KevinWang12138 closed 2 months ago
抱歉,我的测试用例有误,请忽略。 以下测试代码确实B选项中,memory赋值给memory后,修改其中一个值会导致另外一个的值改变 `contract MemoryExample { struct Data { uint value; }
function testMemoryAssignment() public pure returns (uint, uint) {
Data memory data1 = Data(10);
Data memory data2 = data1;
data2.value = 20;
return (data1.value, data2.value);
}
}`
没有认真读题,题目是 “不同类型的引用变量相互赋值时 ” 错误的用例如下,导致我认为B选项是正确的。 首先uint不是一个引用类型而是值类型,不符合题目要求。 其次,对于值类型不可以使用memory和storage进行修饰。 `contract MemoryExample{ uint public number = 20;
function test() public view returns(uint newNumber){
uint mid = number;
mid = 21;
newNumber = number;
}
}`
不同类型的引用变量相互赋值时,修改其中一个的值,不会导致另一个的值随之改变的是以下哪种情况: A. 合约中的storage赋值给本地的storage
B. 合约中的memory赋值给本地的memory
C. 合约中的storage赋值给本地的memory
D. 以上全部
测试了一下,B和C都不会导致另外一个的值随之改变。