现在我正在研究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/