gpt4 book ai didi

c - 交换程序问题,程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:21 25 4
gpt4 key购买 nike

我正在尝试制作一个扫描 3 个整数的程序,然后将它们传递给一个按这种方式对它们进行排序的函数 - 最大的数字将在“num3”,第二个将在“num2”,最小的将位于“num1”,但由于某种原因程序在进入排序功能时崩溃。

#include <stdio.h>
#include <stdlib.h>

void swap(int* a, int* b);
void changer(int* num1, int* num2, int* num3);

int main()
{
int num1 = 0;
int num2 = 0;
int num3 = 0;

printf("Please enter your value for 'num1': ");
scanf("%d", &num1);
getchar();

printf("Please enter your value for 'num2': ");
scanf("%d", &num2);
getchar();

printf("Please enter your value for 'num3': ");
scanf("%d", &num3);

printf("\nYour nums before- \n");
printf("num1 == %d\n", num1);
printf("num2 == %d\n", num2);
printf("num3 == %d\n", num3);

changer(&num1, &num2, &num3);

printf("\nYour nums after- \n");
printf("num1 == %d\n", num1);
printf("num2 == %d\n", num2);
printf("num3 == %d\n", num3);

system("PAUSE");
return 0;
}

void changer(int* num1, int* num2, int* num3)
{
if (*num1 > *num3)
{
swap(*num3, *num1);
}
else if (*num1 > *num2)
{
swap(*num1, *num2);
}

if (*num2 > *num3)
{
swap(*num3, *num2);
}
}

void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}

最佳答案

当您将指针传递给 swap() 时,您不应该取消引用它们,因为它需要 int * 而您将传递 int导致未定义的行为,在您的情况下会导致崩溃。编译器应该对不兼容的参数发出警告。

改变每一次出现

swap(*num1, *num2);
/* ^ ^ remove these */

swap(num1, num2);

关于c - 交换程序问题,程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098476/

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