如何通过引用发送指向函数的指针? 例如,我想将它发送到一个函数:
int **example;
谢谢。
答案 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 );