现在我正在研究C中的一个程序,它有3个参数:一个“第一”整数的地址、“第二”整数的地址以及存储两个整数的最大值的地址。到目前为止,我有以下基本代码:

void max(int* x, int* y, int* z)
{

    if (x > y) {
        z = x;
    }
    else if (y > x){
        z = y;
    }
}

int main()
{
    int x = 6;
    int y = 4;
    int z;
    max(&x, &y, &z);
    printf("max of %d and %d = %d\n", x, y, z);

    x = 12;
    y = 17;
    max(&x, &y, &x);
    printf("x = %d, y = %d\n", x, y);
}

执行时,输出如下:
max of 6 and 4 = 32767
x = 12, y = 17

然而!我希望它输出这个:
max of 6 and 4 = 6
x = 17, y = 17

我不确定我的max函数哪里出错了。Z不应该这么大,在第二个print语句中x应该等于y。非常感谢您的帮助,谢谢!

最佳答案

当你通过指针传递数据时,如果你想得到这些值,你需要

(*x > *y)

它获取指针指向的值。(x和y是指针,所以它们将包含存储值的内存地址)

关于c - 在C编程中使用指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33791325/

10-12 04:11
查看更多