一个简单的函数问题
#include<stdio.h>int max(int x, int y, int z)
{
if (x>y)
z=x;
else
z=y;
return ;
}
void main()
{
int x,y,z;
x=5;
y=7;
max(x,y,z);
printf("z=%d\n",z);
}
为什么z的值不等于7
#include <cstdlib>
#include <cstdio>
int max(int x, int y, int &z)//z传递方式的问题
{
if (x > y)
z = x;
else
z = y;
return 0;
}
void main()
{
int x, y, z;
x = 5;
y = 7;
max(x, y, z);
printf("z=%d\n", z);
system("pause");
}
提供两种解决方案:
方案一:将z的地址传递到max函数中:
#include <stdio.h>
#include <stdlib.h>
void max(int x, int y, int *z)
{
if(x>y)
*z=x;
else
*z=y;
}
void main()
{
int x,y,z;
x=5;
y=7;
max(x,y,&z);
printf("z=%d\n",z);
}
方案二:将max比较出来的较大值返回到主函数中:
#include <stdio.h>
#include <stdlib.h>
int max(int x, int y)
{
return x>y?x:y;
}
void main()
{
int x,y,z;
x=5;
y=7;
z=max(x,y);
printf("z=%d\n",z);
}
怎么感觉返回语句怪怪的……
看样子z等于0吧? #include<stdio.h>
int max(int x, int y)
{
return (x>y)?x:y;
}
void main()
{
int x,y;
x=5;
y=7;
max(x,y);
printf("z=%d\n",max(x,y));
}
//////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
void max(int x, int y, int *z)
{
if (x > y)
*z = x;
else
*z = y;
}
void main()
{
int x, y, z;
x = 5;
y = 7;
max(x, y, &z);
printf("z=%d\n", z);
system("pause");
} 参数传递问题 回帖是一种美德
页:
[1]