【发布时间】:2012-03-03 03:22:51
【问题描述】:
我有一个函数,我将一个迭代器传递给一个 char * 缓冲区(这也是一个 char *)。该函数需要递增迭代器。无论如何,我发现将迭代器传递给函数的一个好方法是通过引用传递指针:
bool myFunction(unsigned char * &iter)
{
...
但是,我听说这是一种不好的形式,可能会导致问题。这是我同事建议我使用的方法:
typedef unsigned char * unsignedcharptr;
bool myFunction(unsignedcharptr &iter)
{
...
在我看来,他们俩都在做同样的事情。这两种方法之间是否存在编译器差异(我使用的是 Visual Studio 2005)?哪个是正确的?
【问题讨论】:
-
我宁愿考虑指针类型的 typedef 错误的形式会导致问题,但是,对于编译器来说没有任何区别。
-
为什么不返回一个增加的距离而不是修改指针?
-
语义上没有区别,但是第二个是首选,打字很容易阅读。
-
typedef为现有类型创建别名,主要用于可读性目的。 -
@Mr.Anubis 好吧,直到你忘记
iter是一个指针而不是一个对象。*比长类型名称中的ptr多得多。