gpt4 book ai didi

c++ - C++ 中 *& 和 **& 的含义

转载 作者:IT老高 更新时间:2023-10-28 14:01:05 30 4
gpt4 key购买 nike

我在函数声明中多次找到这些符号,但我不知道它们的含义。

示例:

void raccogli_dati(double **& V, double **p, int N) { 
int ultimo = 3;
V = new double * [N/2];
for(int i=0; i < N/2; i++) {
V[i] = new double[N/2], std :: clog << "digita " << N/2 - i
<< " valori per la parte superiore della matrice V: ";
for(int j=i; j < N/2; j++)
std :: cin >> V[i][j], p[ultimo++][0] = (V[i][j] /= sqrt(p[i][0]*p[j][0]));
}
for(int i=1; i < N/2; i++)
for(int j=0; j < i; j++)
V[i][j] = V[j][i];
}

最佳答案

这是通过引用获取参数。因此,在第一种情况下,您通过引用获取指针参数,因此您对指针值所做的任何修改都会反射(reflect)在函数之外。第二个与第一个相似,唯一的区别是它是一个双指针。看这个例子:

void pass_by_value(int* p)
{
//Allocate memory for int and store the address in p
p = new int;
}

void pass_by_reference(int*& p)
{
p = new int;
}

int main()
{
int* p1 = NULL;
int* p2 = NULL;

pass_by_value(p1); //p1 will still be NULL after this call
pass_by_reference(p2); //p2 's value is changed to point to the newly allocate memory

return 0;
}

关于c++ - C++ 中 *& 和 **& 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789806/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com