c语言中,这个语句是什么意思啊?

2025-05-15 07:30:51
推荐回答(3个)
回答1:

tp = a;a = b;b = tp是交换了ab的指向,不影响主函数,t = *a;*a = *b;*b = t是改变了地址上的值,也就是把i和j的值互换。
所以函数中*a*b的输出对应是j=3,i=7,主函数输出ij这个没什么好说的,*p和*q还是ij的值。

回答2:

1)加*交换的是地址,会改变主函数中i和j的值,swap交换的是i和j的地址
2)不加*,不会改变i,j的值,i和j把自己的数值传递给swap函数中形参a,b,其交换的是a,b的值,对i和j无影响。
4) 总结:相当于你在main函数里申请一个变量int i,它在swap函数里是没有这个变量i的,它们只在自己的函数里有效。也就是说,交换的值只在swap函数里有效,如果不用指针*的话交换,这时你也可以把swap函数返回值void改为int(即把i和j交换后的值返回到主函数)
5)对与你上面的注释:注释是对的,那两种交换都会改变swap函数里的a,b值,但申请的中间变量指针交换后不会改变i和j的值。中间变量一般不会使用指针,因为没有赋初值的指针是野指针,它会乱指地址导致结果出错,参数a,b指针接收了main函数中的值

回答3: