这道c语言题 *与&的关系

来源:百度知道 编辑:UC知道 时间:2024/07/07 06:28:40
#include<conio.h>
#include<stdio.h>

int fun(int *x,int y)
{
int t;
/********found********/
t = x ; x = y ;
/********found********/
return(y) ;
}

main()
{
int a = 3, b = 8 ;
clrscr() ;
printf("%d %d\n", a, b) ;
b = fun(&a, b) ;
printf("%d %d\n", a, b) ;
}

帮我解释解释 好吗?
找个不要钱的老师有吗?
谢谢
找个c语言老师 我马上就考3级了 不是数组里怎么有指针

普通变量和指针变量赋值时要性质相同。

t = * a; a = & y;

y通过‘&’符号得到一个地址给了指针变量a,a通过‘*’得到一个普通的值给了t

所以t = x ; x = y ; 改为:t = * x ; x = & y ;
如果加一个语句:y = t ;则函数功能是将a,b值互换。

t = x ; x = y ; 错误就出现在此句,其中x=y是错误的,不能将整形值赋给一个整形指针,如果想将一个整型值赋给一个指针就要强制转换:x=(int *)y;(此种做法有可能出现运行时错误,因为地址(int *)y所指的空间可能是不可读的区域),根据程序的含义,此句应改为*x=y,这时就将y的值赋给了x所指的内存空间了
t=x这句虽然不会出现编译是错误,也不会出现运行时错误,但是这个赋值语句已经违背了程序的本意,这句的意思是:将x(即,&a)赋给了t,将一个地址赋给了一个整型变量,应改为t=*x,这时就将x所指空间的值(即,a)传给了t

int fun(int *x,int y)
这里的*我记得是定义指针变量的意思
b = fun(&a, b)
这里的&是取地址的意思
也就是把a的地址带到函数里
我记得是这个样子的呵呵,我已经不玩C好多年啦···

这个恐怕是不行的吧
因为编译器不允许把整形数赋值给指针的

这是个改错题吧 本来就错了
错了两个了
我觉得应该改为
t=*x;*x=y