我是一个很长时间的C程序员。我听说过D并决定学习它。我喜欢它似乎提供的功能。我遇到了一个让我难倒的问题。我在网上查找并没有找到太多的答案。我想通过一个函数来传递字符串:将字符串传递给D语言中未被修改的函数
module main;
import std.stdio;
import std.string;
int foobar(string s1, string s2)
{
string t1="Hello";
string t2="there";
writeln("t1 = ",t1, " t2 = ", t2);
s1=t1;
s2=t2;
writeln("s1 = ",s1," s2 = ",s2);
return 0;
}
int main(string[] args)
{
string a1;
string a2;
foobar(a1, a2);
writeln("a1 = ",a1," a2 = ",a2);
return 0;
}
输出结果如下:
t1 = Hello t2 = there
s1 = Hello s2 = there
a1 = a2 =
我曾尝试在网上搜索答案我能不能找到一个。我怀疑我只是没有问正确的问题。我知道我可以使用char字符串来做到这一点,但我试图做到这一点“D的方式”。有人会指出我可以提供帮助吗?或者告诉我要问的问题?
如果之前已经回答过,我很抱歉。我可能没有问正确的问题。
预先感谢您的时间。
迈克尔
我猜D中的字符串是按值传递的,与int和其他基本类型相同,除非另有明确规定。这意味着它们(可能还有很多其他类型)的行为与嵌入类型完全相同。相反,在C中,你根本不能“按值传递”一个数组 - 你必须坚持使用指针和“通过引用传递”。 – yeputons
你应该阅读D的介绍:http://ddili.org/ders/d.en/index.html –
如果你正在编写一个C程序:'void test(const char * a){a =“something” ; } int main(){const char * b =“hey”;试验(b)中; }'你会在调用测试之后期望b ==“something”吗? D(几乎)以同样的方式做它:它只是传递一个隐藏的“长度”与指针并调用一个“字符串”。 –