如何在C ++中通过引用发送指向函数的指针?

时间:2014-10-13 13:25:18

标签: c++

如何通过引用发送指向函数的指针? 例如,我想将它发送到一个函数:

int **example;

谢谢。

4 个答案:

答案 0 :(得分:0)

你的问题让很多人感到困惑,因为"发送(指向功能)"不同于"(发送指针)到(功能)" ...给出你的示例变量,我假设你想要后者...

参考方面最后表示:

return_type function_name(int**& example)   // pass int** by ref

以防万一int*是您要传递的内容,而示例代码中的**内容是尝试通过引用传递 - int*它实际上应该是return_type function_name(int*& example) // pass int* by ref 是:

void Input(float **&SparceMatrix1,int &Row1,int &Column1)
{
    cin>>Row1; cin>>Column1;
    *SparceMatrix1 = new float [Row1];
    /*for(int i=0;i<Row1;i++) (*SparceMatrix1)[i]=new float [Column1];*/
}

更新

您的代码:

SparceMatrix1

float** ---------> float* -----------> float SparceMatrix1 *SparceMatrix1 **SparceMatrix1 的类型(它的拼写&#34;稀疏&#34; btw),意味着它可以跟踪这样的数据:

*SparceMatrix1

因此,您尝试将Row1设置为指向float SparceMatrix1 s,但 if (cin >> Row1 >> Column1) { SparceMatrix1 = new float*[Row1]; for (int i = 0; i < Row1; ++i) SparceMatrix1[i] = new float[Column1]; } else SparceMatrix1 = nullptr; // pre-C++11, use NULL, or throw... 尚未指向任何内容,因此您可以&# 39;尊重/遵循它。相反,你应该这样做:

std::vector<std::vector<float>>

正如您所看到的,正确地完成所有这些操作有点棘手,因此您最好使用{{1}}代替(这样更容易做对,但已经很棘手)足够 - 你也会发现太多关于它们的stackoverflow问题。)

答案 1 :(得分:0)

只需声明:

void f(int*&);

答案 2 :(得分:0)

当您将int x传递给函数foo()并且收到它时,

foo(int& var), here `int&` for `reference to int`, just replace it with whatever reference you want to pass, in your case `foo(int** &)` .
   ^^^^

如果您想通过引用传递char pointer(char *),请执行foo(char* &)

答案 3 :(得分:0)

我的建议不仅仅是针对这种情况,而且一般来说:当你遇到复杂类型的问题时,请使用typedef。它不仅可以帮助您解决这个问题,还可以了解它如何更好地运作:

class Foobar;

typedef Foobar* FoobarPtr;

void function( FoobarPtr &ref );