注册 登录
编程论坛 C++教室

关于指针的小问题

newCpp 发布于 2009-10-04 08:02, 519 次点击
程序代码:
#include <iostream>
using namespace std;
int main()
{
int i=0,j=0;
int *p;
int *p1;
p=&i;
p1=&j;
*p=5;
cout<<"i "<<i<<endl;
cout<<"*p "<<*p<<endl;
cout<<"j "<<j<<endl;
cout<<"*p1 "<<*p1<<endl;
p=p1;
*p=100;
cout<<*p<<" "<<*p1<<endl;
cout<<"i "<<i<<endl;
cout<<"*p "<<*p<<endl;
cout<<"j "<<j<<endl;
cout<<"*p1 "<<*p1<<endl;

return 0;

}


这段指针代码的运行结果如下
只有本站会员才能查看附件,请 登录



在两个指针没有相互赋值之前,我修改

指针*P的值的话,指针指向的&i的值会发生变化,

但为什么在指针p和指针p1在使用了p=p1;

这句话的时候指针 p所执向的i的值没有了变化?这个是为什么?

5 回复
#2
无诲今生2009-10-04 08:55
因为你对i,j都赋被值0,    你使p,p1分别指向i,j,    *p=5说明你只修改p的指向,但是p=p1,p所指向的地址改变了,但还是指向其值为0的地址,所以你输出时看不到i的变化
#3
kyozy2009-10-04 11:42
p=p1相当于p和p1都同时指向了j的地址。
#4
逆光2009-10-04 12:09
#include <iostream>
using namespace std;
int main()
{
int i=0,j=0;
int *p;
int *p1;
p=&i;//p指向i的地址
p1=&j; //p指向j的地址
*p=5; //p所指向的地址中的值变为5即i变为5
cout<<"i "<<i<<endl;
cout<<"*p "<<*p<<endl;
cout<<"j "<<j<<endl;
cout<<"*p1 "<<*p1<<endl;
p=p1; //p,p1同时指向j的地址,i的值保持5不变
*p=100; //j的值变为100
cout<<*p<<" "<<*p1<<endl;
cout<<"i "<<i<<endl;
cout<<"*p "<<*p<<endl;
cout<<"j "<<j<<endl;
cout<<"*p1 "<<*p1<<endl;
 
return 0;
 
}
#5
lintaoyn2009-10-04 18:08
int *p;
int *p1;
p=&i;
p1=&j;
/********************/
int *p = &i;
int *p1 = &j;
这样写会更好一些
#6
yxb00012009-10-05 02:08
p=p1;之前p==&1,*p变,则i变;

之后p!=&1,指针p己不指向i的值,故i没有了变化。
1