繁体   English   中英

为什么该程序不做任何更改,但是下面的程序却做呢?

[英]Why wouldn't this program change anything, but the one below it does?

我正在为即将进行的考试研究C ++的指针,但我不知道为什么这里的第一个代码不交换值,而第二个代码却交换了值。 如果有人可以向我解释为什么那会很棒。

为什么该程序不交换b [0]和b [1]的值:

#include <iostream>
using namespace std;

void func1 (int* x, int *y)
{
    int* temp = x;
    x = y;
    y = temp;
}

int main()
{
    int b[6] = { 1, 2, 3, 4, 5, 6};
    func1(&b[0], &b[1]);
    cout << b[0] << b[1];
}

但是这个做:

#include <iostream>
using namespace std;

void func2(int* x, int *y)
{
    int temp = *x;
    *x = *b;
    *y = temp;
}

int main()
{
    int b[6] = { 1, 2, 3, 4, 5, 6};
    func2(&b[0], &b[1]);
    cout << b[0] << b[1];
}

谢谢你:D

解释是,在第一种情况下,您交换的是指向值的指针,而不是指向的值本身。 因此,在第一种情况下您要操纵地址,而在第二种情况下要操纵值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM