岁月 发表于 2014-11-23 14:09:21

求解···

怎么实现把函数shuru的xy值改变呢
#include <stdio.h>
void shuru(int x,int y);
void main()
{
int a={{1,2,3,4},{5,6,7,8,},{9,10,11,12}};
int x,y;
x=y=0;
shuru(x,y);
printf("数值为:%d",x);
}
void shuru(int x,int y)
{
int i,xy={0};
for(i=0;i<2;)
{
printf("i=");
scanf("%d",&xy);
if(xy>2)
{
   i=0;
   printf("输入错误未知位置%d\n",xy);
}else
{
   printf("j=");
   scanf("%d",&xy);
   if(xy>3)
   {
    i=0;
    printf("输入错误未知位置%d,%d\n",xy,xy);
   }
   else
   {
    x=xy;
    y=xy;
    i=4;
   }
}

}
}

仰望天上的光 发表于 2014-11-23 14:36:31

void shuru(int x,int y);
这个函数的参数是值传递,就是传递进去的仅仅是X,Y的副本。在函数内部怎样都不可能改变(这里指在C语言标准内的常规手段)x,y的值(只可能改变x,y副本的值 )

岁月 发表于 2014-11-23 14:50:32

仰望天上的光 发表于 2014-11-23 14:36
void shuru(int x,int y);
这个函数的参数是值传递,就是传递进去的仅仅是X,Y的副本。在函数内部怎样都不 ...

难道xy不能作为一个存储值的变量吗非得全局

仰望天上的光 发表于 2014-11-23 15:33:01

岁月 发表于 2014-11-23 14:50
难道xy不能作为一个存储值的变量吗非得全局

作为全局是一种方式,另一种更好的方式是函数原型由void shuru(int x,int y);
改为void shuru(int* px,int* py);即传递x和y的指针进函数,函数内部就有可能修改x和y的值

岁月 发表于 2014-11-23 17:40:55

仰望天上的光 发表于 2014-11-23 15:33
作为全局是一种方式,另一种更好的方式是函数原型由void shuru(int x,int y);
改为void shuru(int* px,i ...

恩好的谢谢
页: [1]
查看完整版本: 求解···