主要在没有指针的函数中修改指针

时间:2014-05-24 15:08:48

标签: c++ pointers reference

让我举一个例子来理解我的问题:

void fct1()
{
 int T[20];
 int* p=T;//the goal is to modify this pointer (p)
 fct2(&p);
}
void fct2(int** p)
{
  (*p)++;//this will increment the value of the original p in the fct1
}

我想要的是避免使用指针并仅使用引用来实现它,它可能吗?

2 个答案:

答案 0 :(得分:1)

是的,可以使用参考文献来完成。

void fct2(int* &p) {
    p++;
}

答案 1 :(得分:0)

如果可能的话,我建议使用std::array提供的迭代器:

void fct1()
{
    std::array<int, 20> l;
    auto it = l.begin();
    fct2(it);
}

template<class I>
void fct2(I& it)
{
    ++it;
}