C指针,最小值和最大值

安农·哈努霍夫

我需要编写一个将num1,num2和num3作为参数的函数。一旦函数运行完毕,发送到主函数的参数(num1,num2和num3)应更改,以使num1包含最小值,num2包含第二个最大值,num3包含最大值。我还需要编写一个交换功能并使用它。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
void SmallBig(int* num1, int* num2, int* num3);
void swap(int* x, int* y);
void main()
{
    int *num1, *num2, *num3;
    *num1 = 1;
    *num2 = 69;
    *num3 = 22;
    printf("%d %d %d\n", *num1, *num2, *num3);
    SmallBig(*num1, *num2, *num3);
    printf("%d %d %d\n", num1, num2, num3);
    system("PAUSE");

}
void SmallBig(int* num1, int* num2, int* num3)
{
    if (*num1 > *num3 && *num2 > *num3 && *num1 > *num2)
    {
        swap(num1, num3);
        swap(num2, num2);
        swap(num3, num1);
    }
}
void swap(int* x, int* y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}

这些是我得到的错误:

Warning 1   warning C4047: 'function' : 'int *' differs in levels of indirection from 'int' 
Warning 2   warning C4024: 'SmallBig' : different types for formal and actual parameter 1   
Warning 3   warning C4024: 'SmallBig' : different types for formal and actual parameter 2   
Warning 4   warning C4024: 'SmallBig' : different types for formal and actual parameter 3   
Error   5   error C4700: uninitialized local variable 'num1' used   
Error   6   error C4700: uninitialized local variable 'num2' used   

错误7错误C4700:使用了未初始化的局部变量'num3'

请帮我修复程序!谢谢你。阿农

克里斯多夫(Christophe)

错误和问题

关于您的错误:

int *num1, *num2, *num3;  // you define 3 pointers to int but let them unitinialised !
*num1 = 1;                 // you write something to the poinded adress, which might be random !!
*num2 = 69;
*num3 = 22;

当您使用指针而不初始化它们(仅初始化所指向的值)时,会收到此错误消息

然后您的第二个printf()打印指针,而不是指针的值。

最后,SmallBig()仅在少数情况下有效!

解决方案

在中使用整数main(),而不是指针:

int num1, num2, num3;
num1 = 1;
num2 = 69;
num3 = 22;
printf("%d %d %d\n", num1, num2, num3);
SmallBig(&num1, &num2, &num3);   // use the address 
printf("%d %d %d\n", num1, num2, num3);

我差点忘了你的SmallBig()功能!在那里,继续像您一样使用指针。但是您必须预见更多的情况:

   if (*num1 > *num3) 
        swap (num1, num3); 
   if (*num1 > *num2) 
        swap (num1, num2); 
   if (*num2 > *num3) 
        swap(num2, num3);
 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组中的Java最小值和最大值

来自分类Dev

使用awk的最大值和最小值

来自分类Dev

查找函数的最小值和最大值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

SQL查询最小值和最大值

来自分类Dev

在列表中交换最大值和最小值

来自分类Dev

SQL本地最小值和最大值

来自分类Dev

使用最小值和最大值的置信带

来自分类Dev

dygraph:显示最大值和最小值

来自分类Dev

Google图表上的最大值和最小值

来自分类Dev

确定滑块范围的最小值和最大值

来自分类Dev

gnuplot:如何绘制最大值和/或最小值

来自分类Dev

每组的最小值和最大值

来自分类Dev

awk查找数组的最小值和最大值

来自分类Dev

铲斗以最大值和最小值排序

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

列的最大值和最小值之间的差异

来自分类Dev

使用C中的指针的数组的最大值和最小值

来自分类Dev

熊猫的最大值和最小值

来自分类Dev

每组保持顺序的最小值和最大值

来自分类Dev

地址范围的最小值,最大值和步长

来自分类Dev

最小值和最大值

来自分类Dev

元组列表中的最小值和最大值

来自分类Dev

数学最小值和最大值返回NaN

来自分类Dev

合并行并取最小值和最大值

来自分类Dev

在列表中获取最小值和最大值

来自分类Dev

使用awk提取最大值和最小值

来自分类Dev

C编程数组的最小值和最大值