首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

第二个简单的有关问题

2012-02-10 
第二个简单的问题:inta5,b10int*p1,*p2,*tempp1&ap2&btempp1/*p1存储的地址赋给temp后,p1是不是

第二个简单的问题:
int   a=5,   b=10;
int   *p1,   *p2,   *temp;
p1=&a;
p2=&b;

temp=p1;   /*   p1存储的地址赋给temp后,
                       
                        p1是不是还保留着原来的值?   */

p1=p2;       /*   p2存储的值是不是覆盖了p1的值?   */

p2=temp;
............................
*temp=*p1;       /*   这样赋值
*p1=*p2;                
*p2=*temp;             可以吗?   */
...........................
int   a=5,   b=10,   c;
c=a;
a=b;
b=c;
这样呢,为什么不可以?

[解决办法]
简单?

指针是一个int变量,但作用是用来存放地址的。
* 运算符可以提取存放的地址所代表的对象。

int i = 2;
int *p = &i; // & 运算符表示取地址。
p == i的地址
*p == i 本身

int n = 3;
p = &n; //改变p保存的值,但是p所指对象保持不变
*p = 4; //改变p所指向对象的值, 但p自身不改变。



[解决办法]
int a=5, b=10, c;
c=a;
a=b;
b=c;


这个当然可以,你所说的不可以应该是在a,b作为函数的形参时候不行
例如:

fun(int a, int b)
{
int c;
c = a;
a = b;
b = c;
}

然后主函数调用fun()自然得不到你想要得结果,原因就在于传参的形式上,2中方法可以达到你想要的效果,一种是引用,一种是指针,这两种都是对地址进行操作,具体的你找找书,书上说的很清楚

热点排行