首页 > 解决方案 > 代码是否交换数组的两个数字?

问题描述

实际参数中应包含“&”以提供所需的结果,但以下代码也正确交换了数字。如何?

void swap(int *a, int *b){

    int t=*a;
    *a=*b;
    *b=t;

}

//there is an array ar[]
swap(ar[0],ar[1]);

它应该给出一些垃圾值,但它给出了正确的答案。

标签: c++

解决方案


函数调用有可能实际上是调用库定义的std::swap函数而不是您的自定义交换函数(因为类型不匹配)。

更改函数的名称并查看它是否编译。


推荐阅读