gpt4 book ai didi

d - 转义对局部变量的引用

转载 作者:行者123 更新时间:2023-12-03 07:33:26 24 4
gpt4 key购买 nike

我是 D 语言新手。在尝试创建一个返回字节数组的简单函数时,我在尝试返回值时遇到了错误。我应该有不同的方式从函数返回局部变量吗?

在返回行上,我收到错误错误:转义对本地 c 的引用

我的代码:

byte[] xorFixed(byte[] a, byte[] b){
if (a.sizeof != b.sizeof) return null;
byte[a.sizeof] c;
for (int i = 0; i < a.sizeof; i++)
{
c[i] = (a[i] ^ b[i]);

return c;
}

最佳答案

byte[]byte[some_size] 是两种不同的类型。 byte[some_size] 是一个静态数组,在使用时会进行复制,而 byte[] 是一个切片或指向其值的动态数组。

当您尝试返回c时,由于返回值是一个切片,因此它尝试获取指向c的指针...这是一个停止的本地值当函数返回时存在。如果编译它,它会在运行时给你乱码或崩溃!

您需要修复类型。 c 不应该是byte[a.sizeof]。它应该只是一个简单的byte[]。要设置数组的大小,请使用 .length 而不是 .sizeof

if (a.length != b.length) return null; // changed sizeof -> length
byte[] c; // changed type
c.length = a.length; // this sets the length of c to match a
for (int i = 0; i < a.length; i++) // changed sizeof to length

这会做你想要的。

关于d - 转义对局部变量的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com