【发布时间】:2011-02-09 11:16:33
【问题描述】:
我想知道这两种将地址传递给指针的实现中哪一种更好。第一个中的数据交换在第二个中没有发生吗?第二种方法更有效吗?更具可读性?都一样吗?
版本 1
void ptrFunction(int& arg)
{
int* ptr = &arg;
std::cout<<"The pointer's value:" << *ptr << "\n";
}
int main()
{
int x=5;
ptrFunction(x);
return 0;
}
第 2 版
void CallViaPointers(int *arg)
{
int *ptr = *arg;
std::cout << "The pointer's value: " << *ptr;
}
int main()
{
int x = 100;
CallViaPointers(&x);
return 0;
}
【问题讨论】:
-
等等...这两个是等价的吗?
-
@muntoo:不,版本 1 中 x=5,版本 2 中 x=100 :)
-
@Øystein 哈哈。 :) 忽略这一点,版本 1 应该打印 5,但我不确定版本 2。
-
@muntoo:正如 Fred Nurk 所说,它有一个错字。
标签: c++