当我试图用指针交换这两个整数时,就会出现分段错误。
基本上,在我交换之前,x分配给1,y分配给2。交换之后,x被分配给2,y被分配给1。
该程序采用两个整数x和y,据说是用来交换它们的:
int swap(int x, int y){
int *swapXtoY;
int *swapYtoX;
*swapXtoY = y;
*swapYtoX = x;
}发布于 2016-01-17 18:58:22
函数swap将其两个参数都期待为int,但您正在传递int *。编译器应该对此提出警告。
在C中,您似乎不知道指针是如何工作的。您的函数只是将两个int分配给局部变量。职能应该是:
int swap(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}发布于 2016-01-17 18:58:13
swap方法应该接受两个指针,而不是两个整数。
试着跟着。
int swap(int* x, int* y){
int temp = *x;
*x = *y;
*y = temp;
}发布于 2016-01-17 21:12:18
您必须按地址将变量传递给函数以更改其value.That,您的函数应该期望指针,因为well.Here是一个通用函数,可以交换任何C数据类型的变量:
#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);
}https://stackoverflow.com/questions/34842241
复制相似问题