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

指针,指针问题(帮灌灌水)

newCpp 发布于 2009-08-31 11:11, 337 次点击
程序代码:
[code]#include<iostream>
using namespace std;
int main()
{
int i;              
i=100;
int &j=i;             //定义也需赋值;
cout<<"j "<<j<<endl;
j=200;//引用自己更改自身数值,
cout<<"i "<<i<<endl;
cout<<"j "<<j<<endl;
int k;
k=5;
//================
const int &h=k;//常量引用,只能够被赋值不能够更改自身的数值,并且在其定义时必须赋值。
cout<<"h "<<h<<endl;
k=160;//更改整形变量K的值
cout<<"k "<<k<<endl;
cout<<"h "<<h<<endl;
//=================================
int *p;   //定义指针*P
p=&j;//指针指向引用j
cout<<"*p "<<*p<<endl;
*p=105;
cout<<"指针第一次更改过数值引用j 值"<<j<<endl;
cout<<"指针第一次更改过数值*p "<<*p<<endl;
//===============================
//为什么这里指针更改过数值,引用值改了,下面指针更改数值后,k的值没有变化,这个是啥原因??
*p=k;
cout<<"*p "<<*p<<endl;
k=*p;
*p=560;
cout<<"指针指向k更改过数值后的值 "<<k<<endl;
cout<<"指针更改过数值后*p值 "<<*p<<endl;
}
这里面指针P的值我改变了一下,为什么被指向的值K的值没有改变
只有他自己变了。我下面又定义了一个指针变量l为什么他又可以
改变别的数值了。难道是因为
指针P指向过一次引用j??
这个是啥原因造成的啊!![/code]
3 回复
#2
xufen3402009-08-31 12:18
*p=k;
cout<<"*p "<<*p<<endl;
k=*p;
*p=560;

p=&k;
cout<<"*p "<<*p<<endl;
k=*p;
*p=560;

#3
xufen3402009-08-31 12:39
a.如果p指向0012ff6c,k的地址0012ff3c。,*p=0,k=1,
1.*p=k;  
0012ff6c[1]
0012ff3c[1]
2.k=*p;
0012ff6c[1]
0012ff3c[1]
3.*p=560;
0012ff6c[560]
0012ff3c[1]
b.如果p指向0012ff6c,k的地址0012ff3c。,*p=0,k=1,
1.p=&k
p---->0012ff3c[1]
2.k=*p;
p----->0012ff3c[1]
3.*p=560;
p----->0012ff3c[560]

#4
newCpp2009-08-31 16:45

谢谢各位,我通过别人的指点发现原来是
*p=k只是将k赋值给8p并没有用指针p指向k所有我下面更改
p的数值k没有变化,
呵呵,才明白这层意思我
*p=k;
cout<<"*p "<<*p<<endl;
k=*p;
*p=560;
cout<<"指针指向k更改过数值后的值 "<<k<<endl;
cout<<"指针更改过数值后*p值 "<<*p<<endl;
就这里,只是给指针p的赋值
1