您的位置:首页 > 其它

4.关于指针的两个看似简单实则意义深远的题

2012-04-04 21:32 260 查看
0.指针是无私的,它并不关系自己,只关心指向的那个变量 。

int a = 1 ;

int *p1 = &a ;

*p1 += 1;

cout<<a<<*p1<<endl;

输出结果为,a = 2,*p1 = 2;

结论:指针是无私的,它并不关心自己,只关心指向的那个变量,,说白了,,就是间接引用那个变量,指针没有值,只是地址。

对*指针的操作就是对指向变量的操作!!!

1.void main()

{

int a ,b ;

int *p,*p1,*p2;

p2 = &b;

p1 = &a;

cout<<"输入两个值"<<endl;

cin>>a>>b;

if (a<b)

{

p = p1;

p1 = p2 ;

p2 = p;

}

cout<<"a = ? p1 = ? *p1 = ?"<<a<<" "<<p1<<" "<<*p1<<endl;

cout<<"b = ? p2 = ? *p2 = ?"<<b<<" "<<p2<<" "<<*p2<<endl;

}

结果:假如输入a = 1,b = 2。

输出结果为 a = 1 ,p1 = 611100 ,*p1 = 2;

b = 2 ,p2 = 610004,*p2 = 1;

if (a<b) --- a.b并未交换,,交换的只是p1,p2的地址。交换的只是p1和p2的指向,a,b值并未改变!!!!!

{

p = p1;

p1 = p2 ;

p2 = p;

2.不改变输入的三个数(利用指针),将三个数排序,按*p1最大,*p2 ,*p3的顺序排出。。。利用指针!!!!!/

利用交换指针的指向,而不改变原来的变量值!!

int a,b,c;

int *p, *p1=&a, *p2=&b, *p3=&c;

cout<<"输入a,b,c"<<endl;

cin>>a>>b>>c;

if (*p1<*p2)//不要写成a<b,或者b<c之类的。因为后面的第二次比较第二次比较中,要求*p1是大的那个,,这时候*p1具体是a,还是b是未知的。

p = p1;

p1 = p2;

p2 = p; //交换指针的指向,不改变原来的变量值!!

}//先比较出两个之中较大的那个

if (*p1 < *p3)

{

p = p1;

p1 = p3;

p3 = p;

}//如果*p3最大,,那么执行完第二次比较之后,p3指向第一次比较后较大的那个结果。接下来的比较就应该,将p3和p2指向互换,也就是下面的比较执行

//如果,*p3比第一次比较后的*p1小,那么p2和p3比较,互换。

if (*p2 < *p3)//比较条件必须是*p2 < *p3,,因为要求是*p2是第二大的那个

{

p = p2;

p2 = p3;

p3 = p ;

}

cout<<*p1<<" "<<*p2<<" "<<*p3<<endl;

}

3.

int *p, *p1=&a, *p2=&b,

if (*p1<*p2)

{

*p = *p1;///严重注意这里!!:p并没用被初始化地址,,它的地址这时候是任意的,当你把*p1(a变量)赋给未知地址的指针时候,,这时候系统会报错!!

*p1 = *p2;

*p2 = *p;

4.

int p, *p1=&a, *p2=&b,

if (*p1<*p2)

{

p = *p1;//这时候就没错了,因为p声明的是一个变量,而不是指针!

*p1 = *p2;

*p2 =p;

5.注意;使用指针对数的排序是非常广泛的!!!!

6.输入两个数,利用指针函数对两个数进行由大到小的排序。

void swap(int *p1,int *p2)//这里的形参中,一定要加*号,用来说明函数的形参是指针变量

{

int temp;

temp = *p1;

*p1 = *p2 ;

*p2 = *p1 ;

cout<<*p1<<*p2<<endl;

}

void main()

{

cout<<"输入两个数“<<endl;

int a,b;

cin>>a>>b;

int *point = &a ,*point2 = &b;

if(a<b)

{

swap(ponit1,point2)//注意:这里不用在point2前面加*号!!,这里已经是指针变量了,,再加就错了!

cout<<a<<b<<endl;

cout<<*point1<<*point2<<endl;

}

结果:假如输入的是1和2;

那么结果为

输出a = 2,b = 1;

a = 2,b = 1

a = 2,b = 1;

可以看出,,利用指针的函数,,其值传递方式是前后一致的,函数里和主函数中一起改,因为指针引用的就是主函数的变量,是同一个变量,并不是按值传递方式。

这就叫利用指针传递方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐