繁体   English   中英

在c ++中通过引用传递指针

[英]passing a pointer by reference in c++

我有一个函数,我将迭代器传递给char *缓冲区(也是一个char *)。 该函数需要递增迭代器。 无论如何,我发现将迭代器传递给函数的一个好方法是通过引用传递指针:

bool myFunction(unsigned char * &iter)
{
   ...

但是,我听说这是不好的形式,可能会导致问题。 这是我的同事建议我使用的方法:

typedef unsigned char * unsignedcharptr;
bool myFunction(unsignedcharptr &iter)
{
   ...

在我看来,他们都在做同样的事情。 这两种方法之间是否存在编译器差异(我使用的是Visual Studio 2005)? 哪个是对的?

我认为这两者之间没有任何区别。 你应该问你的同事他认为有什么。

可能的原因是可维护性,如果你想从unsigned char *切换到char *你只需要改变一个地方。 但我认为,这可能导致其他问题。

这两种方法之间是否存在编译器差异(我使用的是Visual Studio 2005)?

正如其他人正确指出的那样,“不”。

哪个是对的?

在两种选择之间,它完全归结为“我应该隐藏在typedefs背后的指针”辩论。 任何一个职位都有有效的论据

但是,我认为您的两个代码段都受到过度专业化的影响。 我更喜欢将算法编码为模板函数,这样我就不会重复自己了

如果您的设计支持它,您可以将代码概括为接受任何迭代器:

template <class InputIterator>
bool myFunction(InputIterator &iter)
{
  std::cout << *iter;
  ++iter;
  return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM