cari

Rumah  >  Soal Jawab  >  teks badan

c++ - 指针变量作为函数参数传递?

1.为了交换a和b的值,将a,b的地址作为函数参数传递
2.实例代码:

#include <iostream>
using namespace std;
//指针变量作为函数参数的例子
void swap(int *m, int *n)  //*m,*n,不是指针所指向的值
{
    int temp;
    temp = *m;
    *m = *n;
    *n =temp;
}
int main()
{
    int a=5, b=10;
    cout<<"a="<<a<<" b= "<<b<<endl;
    cout<<"&a的地址 "<<&a<<endl;
    cout<<"&b的地址 "<<&b<<endl;
    swap(&a, &b);
    cout<<"a="<<a<<" b= "<<b<<endl;
    cout<<"&a的地址 "<<&a<<endl;
    cout<<"&b的地址 "<<&b<<endl;
}

运行结果代码:

a=5 b= 10
&a的地址 0x28fefc
&b的地址 0x28fef8
a=10 b= 5
&a的地址 0x28fefc
&b的地址 0x28fef8

3.主要的问题,main()函数中引用swap()中传的参数是该变量对应的地址,而swap()函数中却是用(int *m, int *n)来接受的,不是特别明白,最后的地址也没有交换,只是交换了地址对应的值。
4.希望可以帮忙解决本问题,并在本问题的基础上,对于我认识的地址和指针的概念一些拓展,或者推荐相关的优秀的文章的url,提前谢谢。

ringa_leeringa_lee2772 hari yang lalu392

membalas semua(2)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:53:22

    指针也是变量,存储的是变量的地址。用变量或者变量的指针都可以访问变量。你需要交换变量的值,需要传址,仅仅传值是做不到的。另外,《C和指针》这本书还可以。

    balas
    0
  • 黄舟

    黄舟2017-04-17 14:53:22

    首先,请把参数写成int* m,类型是int*
    地址是不会交换的,因为地址是变量值的所在地。因为mn是指针变量,它们存的是地址。*m是取出m存储的地址所指向的值。所以是*m*n互换了,而不是mn互换了。

    balas
    0
  • Batalbalas