Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 注释出单独声明的部分时的不同输出_C++_Pointers_Reference - Fatal编程技术网

C++ 注释出单独声明的部分时的不同输出

C++ 注释出单独声明的部分时的不同输出,c++,pointers,reference,C++,Pointers,Reference,我有这段代码,我偶然发现了一些我不懂的东西 包括 包括 使用名称空间std; void getMinMaxdouble&a、double&b、double&c、double*&ptrMin、double*&ptrMax{ 如果a>b swapa,b; 如果a>c swapa,c; 如果b>c swapb,c; ptrMin=&a; ptrMax=&c; } void getMinMaxdouble*a、double*b、double*c、double**ptrMin、double**ptrMax

我有这段代码,我偶然发现了一些我不懂的东西

包括 包括 使用名称空间std; void getMinMaxdouble&a、double&b、double&c、double*&ptrMin、double*&ptrMax{ 如果a>b swapa,b; 如果a>c swapa,c; 如果b>c swapb,c; ptrMin=&a; ptrMax=&c; } void getMinMaxdouble*a、double*b、double*c、double**ptrMin、double**ptrMax{ 如果*a>*b 互换*a、*b; 如果*a>*c 互换*a、*c; 如果*b>*c 互换*b、*c; ptrMin=&a; ptrMax=&c; } 无效或3双a、双b、双c{ 如果a>b swapa,b; 如果a>c swapa,c; 如果b>c swapb,c; } 无效或双*a,双*b,双*c{ 如果*a>*b 互换*a、*b; 如果*a>*c 互换*a、*c; 如果*b>*c 互换*b、*c; } 无效打印顺序常数双*a、常数双*b、常数双*c{
cout在通过指针传递值的第二个getMinMax中,末尾的赋值会更改局部变量,而不是指向的值。要从调用方获取值,需要删除一个间接级别:

*ptrMin = a;
*ptrMax = c;

这在启用参考版本的情况下起作用,因为它正在更新main中的变量,尽管随后的结果可能不是正确的最小/最大值。

未定义的行为可能会在距离上产生影响,甚至在时间上会产生影响。请不要为与问题相关的内容链接到外部网站。尤其不要链接到图像。请将问题中的所有相关内容以文本形式发布。为什么不直接使用或使用其他现成的算法从容器中获取最小值或最大值?在我看来,这就像一堆冗余代码,应该使用标准算法替换为一行或两行。你到底为什么要处理作为指针的非指针变量?您需要删除一个间接级别…-不,他需要停止重新发明轮子并开始使用。