首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用指针交换2个整数?

如何使用指针交换2个整数?
EN

Stack Overflow用户
提问于 2016-01-17 18:50:49
回答 3查看 10.5K关注 0票数 4

当我试图用指针交换这两个整数时,就会出现分段错误。

基本上,在我交换之前,x分配给1y分配给2。交换之后,x被分配给2y被分配给1

该程序采用两个整数xy,据说是用来交换它们的:

代码语言:javascript
复制
int swap(int x, int y){

    int *swapXtoY;
    int *swapYtoX;

    *swapXtoY = y;
    *swapYtoX = x;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-17 18:58:22

函数swap将其两个参数都期待为int,但您正在传递int *。编译器应该对此提出警告。

在C中,您似乎不知道指针是如何工作的。您的函数只是将两个int分配给局部变量。职能应该是:

代码语言:javascript
复制
int swap(int *x, int *y){

    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}
票数 8
EN

Stack Overflow用户

发布于 2016-01-17 18:58:13

swap方法应该接受两个指针,而不是两个整数。

试着跟着。

代码语言:javascript
复制
int swap(int* x, int* y){
  int temp = *x;
  *x = *y;
  *y = temp;    
}
票数 5
EN

Stack Overflow用户

发布于 2016-01-17 21:12:18

您必须按地址将变量传递给函数以更改其value.That,您的函数应该期望指针,因为well.Here是一个通用函数,可以交换任何C数据类型的变量:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void Swap(void *x,void *y,size_t bytes);

int main(void)
{
    int x = 3, y = 4;
    Swap(&x,&y,sizeof(int));
    printf("x now : %d\n",x);
    printf("y now : %d\n",y);
    return 0;
}
void Swap(void *x,void *y,size_t bytes)
{
    void *tmp = malloc(bytes);
    memcpy(tmp,x,bytes);
    memcpy(x,y,bytes);
    memcpy(y,tmp,bytes);
    free(tmp);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34842241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档