tiffany项链经典款钥匙:这个题是什么意思?

来源:百度文库 编辑:中科新闻网 时间:2024/05/07 01:32:57
void fun(int *x,int *y)
{
*x=3;
*y=4;
printf("%d,%d\n",*x,*y);
}
main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d,%d\n",x,y);
}
这个题是什么意思?为什么‘&'能放在fun中,用了‘&'这个符号怎么就起到调用函数的作用了?在没有‘&'的时候为什么会是0,4 1,2?在这里为什么要用‘*'呢?没有为什么不行呢?

void fun(int *x,int *y) //函数fun,形参:整形指针x,y
{
*x=3; //给x指向的地址赋值3
*y=4; //给y指向的地址赋值4
printf("%d,%d\n",*x,*y); //输出指针x,y指向的值
}
main()
{
int x=1,y=2;
fun(&y,&x); //实参:y的地址,x的地址
//注意:fun的形参顺序为(int *x,int *y)
//fun函数内部指针x实际指向main函数的y,指针y实际指向main函数的x
//所以x被改变后值变成4,y变成3
printf("%d,%d\n",x,y);
}

正确的最终结果应该是3`,4 4,3

为什么‘&'能放在fun中,用了‘&'这个符号怎么就起到调用函数的作用了?
&表示取变量的地址,不是用来调用函数的

在没有‘&'的时候为什么会是0,4 1,2?
因为,没有‘&',函数fun的2个指针就指向了内存中地址为1,2的值
x,y的值也没有改变,所以仍然是1,2

在这里为什么要用‘*'呢?没有为什么不行呢?
因为变量分全局变量和局部变量
如果函数形参没有‘*'(不是指针)的话,函数fun的x,y就成了局部变量
也就不能改变main函数里的x,y的值了

问这个问题就说明你不知道什么叫做指针
或者你没有学好
&*书上说得很清楚的哦
并且这个题 很简单的

&表示取变量的地址:
你的x,y是一个整数,加上&表示取这个变量的地址传入函数

调用函数就是将函数名写出来,并且给出函数的参数就可以了!

注意函数调用的时候要参数的个数和类型一致,函数 fun 的参数应该是两个,都是整型指针,所以传入的也是两个整形的指针

*有两个作用,第一个就是乘法啦!另外一个就是用在指针的前面,表示取指针指向的地址的变量的值。

在C语言编程中,一个变量表示为两个部分,一部分是变量在内存中存放的地址,用取地址操作符&实现,如&X,为取得变量X在内存中存放的地址;另一部分是变量的值,如*x,为取得变量X的数值,但是int *X作为参数时,表示定义一个指向整数类型的变量的指针。在此程序中,void fun(int *x,int *y) 是定义的一个函数,int *x,int *y是形式参数,接收从主程序main()中传递过来的&y,&x实际参数,实际上&y是取得变量Y的地址值,&x是取得变量X的地址值,main()是主函数,在主函数中调用fun(&y,&x)函数;最后输出的结果应该是:3,4,4,3