gpt4 book ai didi

c - 在C中使用指针交换两个数字

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

我尝试使用指针交换两个整数...

#include<stdio.h>
int main()
{
int a,b,*i,*j;
printf("Enter two integer:");
scanf("%d%d",&a,&b);
i=&a;
j=&b;
a=*j;
b=*i;
printf("\n %d \t %d",a,b);
return 0;
}

输入是

12 45

输出是

45 45

经过一些尝试,我发现如果我先分配b=*i,然后分配a=*j,第一个整数即12 正在重复..

为什么会这样?在我对指针的理解中,这就是我所做的。我已将 *j(即存储在 a 地址中的变量值)分配给 b*i(即存储在 b 地址中的变量值)到 a..

请解释这个程序中到底发生了什么..

最佳答案

从概念上讲,这就是您想要做的:

int temp = a; //temp <- 12
a = b; //a <- 45
b = temp; //b <- 12

从概念上讲,这就是您正在做的事情:

a = b; //a <- 45
b = a; //b <- 45

如果您使用的是 C++11,则可以“优雅地”执行此操作:

std::tie(b, a) = std::make_tuple(a, b);

关于c - 在C中使用指针交换两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19610135/

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