c语言中的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 03:32:09
本人初学c语言,帮忙看个程,目的是交换a和b的值 int a=3,b=8;int *p,*q; p=&a;q=&b;
a=a+b; *p=*p+*q;
b=a-b; *q=*p-*q;
a=a-b; *p=*p-*q;
我们老师说后者比前者性能好,好像是省内存什么的,我觉得*p不就是a,*q不就是b吗,怎么会不一样呢??谢谢了啊!!

我也是猜测,应为p q都是声明为指针,指针存储的分别是a b的内存地址,所以调用起来比较直接。
比如a=a+b,计算机会先找到a,然后根据内存地址把a值放进cpu的计算器,再找b,放入计算器另一端,计算!用指针就是直接放入a b值。因此速度方面会快一点

指针运算的速度快一些。

但用加减法的方法,交换速度不如多用一个变量的赋值方法快.

推荐用:
int a,b,tmp;
tmp=a;
a = b;
b = tmp;

因为没有加减运算,速度快的多。

一楼的对,计算机只认识地址