将指针作为函数参数传递
Passing a pointer as a function argument
我正在传递一个指向函数的指针,目的是修改保存在原始地址的数据。
#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
只是想知道是否有 better/easy 阅读处理此问题的方法。
如果你只是想通过函数中的参数对参数进行修改,你可以将其设为引用传递。
void square(int& x)
{
x = x + 2;
cout<<x<<" ";
}
int main()
{
int y = 5;
cout<<y<<" ";
square(y);
cout<<y<<" ";
return 0;
}
如果你只有指针,你仍然可以通过operator*
获取指向的对象,如。
或者pass-by-pointer就足够了,那么你不需要中间指针对象x
来传递给函数。即不需要像您的代码所示那样使用指向指针的指针。
void square(int* x)
{
*x = *x + 2;
cout<<*x<<" ";
}
int main()
{
int y = 5;
cout<<y<<" ";
square(&y);
cout<<y<<" ";
return 0;
}
#include <iostream>
using namespace std;
void square(int *x)
{
*x = *x + 2;
cout << *x << " ";
}
int main()
{
int y = 5;
cout<< y <<" ";
square(&y);
cout<< y << " ";
return 0;
}
根据您提供的示例代码,您不需要双重间接寻址。只需传递一个指针 而不是指向指针 的指针。
或者,使用按引用传递。
我正在传递一个指向函数的指针,目的是修改保存在原始地址的数据。
#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
只是想知道是否有 better/easy 阅读处理此问题的方法。
如果你只是想通过函数中的参数对参数进行修改,你可以将其设为引用传递。
void square(int& x)
{
x = x + 2;
cout<<x<<" ";
}
int main()
{
int y = 5;
cout<<y<<" ";
square(y);
cout<<y<<" ";
return 0;
}
如果你只有指针,你仍然可以通过operator*
获取指向的对象,如
或者pass-by-pointer就足够了,那么你不需要中间指针对象x
来传递给函数。即不需要像您的代码所示那样使用指向指针的指针。
void square(int* x)
{
*x = *x + 2;
cout<<*x<<" ";
}
int main()
{
int y = 5;
cout<<y<<" ";
square(&y);
cout<<y<<" ";
return 0;
}
#include <iostream>
using namespace std;
void square(int *x)
{
*x = *x + 2;
cout << *x << " ";
}
int main()
{
int y = 5;
cout<< y <<" ";
square(&y);
cout<< y << " ";
return 0;
}
根据您提供的示例代码,您不需要双重间接寻址。只需传递一个指针 而不是指向指针 的指针。 或者,使用按引用传递。