Pie*_*son -1 c++ pointers pass-by-reference
当我调用我的calculatePlaneEQ函数时,当我分配值时,它会抛出一个访问冲突...我的指针生锈了,但似乎这应该有效!
float *planeCoefA, *planeCoefB, *planeCoefC, *planeCoefD = NULL;
Run Code Online (Sandbox Code Playgroud)
呼叫:
calculatePlaneEQ (<...>, &planeCoefA, &planeCoefB, &planeCoefC, &planeCoefD);
Run Code Online (Sandbox Code Playgroud)
DEF:
void calculatePlaneEQ (<...>, float ** myXnorm, float ** myYnorm, float ** myZnorm, float** myD)
{
float xNorm = 1.3;
float yNorm = 1.4;
float zNorm = 1.5;
float eqD = 1.6;
*(*myXnorm) = xNorm;
*(*myYnorm) = yNorm;
*(*myZnorm) = zNorm;
*(*myD) = eqD;
}
Run Code Online (Sandbox Code Playgroud)
它应该是:
float planeCoefA, planeCoefB, planeCoefC, planeCoefD;
Run Code Online (Sandbox Code Playgroud)
呼叫:
calculatePlaneEQ (<...>, &planeCoefA, &planeCoefB, &planeCoefC, &planeCoefD);
Run Code Online (Sandbox Code Playgroud)
DEF:
void calculatePlaneEQ (<...>, float * myXnorm, float * myYnorm, float * myZnorm, float * myD)
{
float xNorm = 1.3;
float yNorm = 1.4;
float zNorm = 1.5;
float eqD = 1.6;
*myXnorm = xNorm;
*myYnorm = yNorm;
*myZnorm = zNorm;
*myD = eqD;
}
Run Code Online (Sandbox Code Playgroud)
更好的是,使用引用而不是指针:
呼叫:
calculatePlaneEQ (<...>, planeCoefA, planeCoefB, planeCoefC, planeCoefD);
Run Code Online (Sandbox Code Playgroud)
DEF:
void calculatePlaneEQ (<...>, float &myXnorm, float &myYnorm, float &myZnorm, float &myD)
{
float xNorm = 1.3;
float yNorm = 1.4;
float zNorm = 1.5;
float eqD = 1.6;
myXnorm = xNorm;
myYnorm = yNorm;
myZnorm = zNorm;
myD = eqD;
}
Run Code Online (Sandbox Code Playgroud)
这是比C语言使用指针更惯用的C++,并且不易出错.
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |