gpt4 book ai didi

c++ - 当我以这种方式修改交换函数时会发生什么?

转载 作者:行者123 更新时间:2023-12-01 13:51:14 25 4
gpt4 key购买 nike

当我们以这种方式修改交换函数时会发生什么?我知道它不起作用,但究竟发生了什么?我不明白我实际上做了什么?

#include <stdio.h>

void swap(int*, int*);

int main(){
int x=5,y=10;
swap(&x, &y);
printf("x:%d,y:%d\n",x,y);
return 0;
}

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

最佳答案

在函数中

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

您只需交换两个函数参数的指针值。

如果你想交换它们的值,你需要像这样实现它

void swap(int* x, int* y){ 
int temp = *x; // retrive the value that x poitns to
*x = *y; // write the value y points to, to the memory location x points to
*y = temp; // write the value of tmp, to the memory location x points to
}

这样交换函数交换引用的内存位置的值。

关于c++ - 当我以这种方式修改交换函数时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61057434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com