26有下列程序
#include <stdio.h>
void swap(int *a, int *b)
int *tp,t;
t=*a; *a=*b; *b=t;
tp=a; a=b; b=tp;
printf("%d,%d,", *a, *b);
main()
{
int i=3, j=7, *p=&i, *q=&j;
swap(&i, &j);
printf("%d,%d", *p, *q);
}
程序执行后的输出结果是()
你的代码贴的有点问题,不过这是一个很经典的函数传参知识点,按值传参,按地址传参,按引用传参,你可以百度函数实现两个数的交换,了解这几种的差异。
如果你的函数参数直接定义为int类型,这是按值传参,默认是拷贝传参,也就是你原来的数据拷贝了一份给函数去使用,这时,你实现内部交换函数外面是没用的。
如果你定义的是int *那么你传参的时候肯定是传递的变量地址,这时候,虽然地址是拷贝了一份给函数,但是我们操作的是地址对应的对象,如果交换内部变量,是不是实际也就是交换了内容。
而有关指针,地址的操作,又涉及一些*运算符的基础。
int * 这叫声明变量为int指针类型,存储一个int变量的地址。 而取地址中的内容可以给变量前面加个 *
那么t=*a; *a=*b; *b=t; 这行代码是不是就是取a,b地址中的值进行交换
而tp=a; a=b; b=tp; 这是不是就是直接交换了a和b的地址 (这个会交换成功吗?验证一下喽~)