【发布时间】:2020-11-08 03:06:38
【问题描述】:
我正在传递一个指向函数的指针,目的是修改保存在原始地址的数据。
#include<bits/stdc++.h>
using namespace std;
void square(int **x)
{
**x = **x + 2;
cout<<**x<<" ";
}
int main()
{
int y = 5;
int *x = &y;
cout<<*x<<" ";
square(&x);
cout<<*x<<" ";
return 0;
}
我能够使用此代码获得所需的输出,即 5 7 7
只是想知道是否有更好/易于阅读的方法来处理这个问题。
【问题讨论】:
-
#include<bits/stdc++.h>和using namespace std;都是不好的做法。不要使用它们。 -
您是否有理由要使用
int **x而不是只写square(x)或square(&y)并将函数更改为void square(int *x) { *x = *x + 2; cout<<*x<<" "; }? -
@cdhowie,在实际代码中没有使用它们,这只是一个临时的sn-p来解释我的问题。
-
@t.niese,这就是我想要的,非常感谢。您能否解释一下这两种方法之间的区别,因为它们似乎给出了相同的结果。
标签: c++ pointers pass-by-reference pass-by-pointer