论坛: 编程破解 标题: C++初学问题.关于指针 复制本贴地址    
作者: NetFog [q70213526]    版主   登录
看教程时有点疑问..
代码一.
代码:

#include <stdio.h>

main()
{
int a,b;
int *point_1,*point_2,*temp_point;
scanf("%d,%d",&a,&b);
point_1=&a;
point_2=&b;
if (a<b)
{
temp_point=point_1;
point_1=point_2;
point_2=temp_point;
}
printf("%d,%d",*point_1,*point_2);
}



此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是利用指针进行地址交换达到大小排序的目的.

代码二
代码:

#include <stdio.h>

main()
{
int a,b;
int *point_1,*point_2;
scanf("%d,%d",&a,&b);
point_1 = &a;
point_2 = &b;
compositor(point_1,point_2);
printf("%d,%d",a,b);
}

static compositor(p1,p2)
int *p1,*p2;
{
int temp;
if (*p1<*p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}



此题与上题不同的是,直接改变了a于b的值达到真实改变的目的


第一段代码不会改变a,b的值.第二段怎么就会改变了???TNND真头痛.我看起来两段代码基本没有多少区别..

地主 发表时间: 07-03-16 16:36

回复: frostmoon [frostmoon]   论坛用户   登录
第一段中:
temp_point=point_1;
point_1=point_2;
point_2=temp_point;
交换了指针

第二段中:
temp = *p1;
*p1 = *p2;
*p2 = temp;
交换了指针的值,就是a,b
恩,这个不像是c++的写法吧~

B1层 发表时间: 07-03-16 21:24

回复: NetFog [q70213526]   版主   登录


几个小时前才看的C++
发现点区别了.


B2层 发表时间: 07-03-16 22:42

回复: jhkdiy [jhkdiy]   版主   登录
对呀,其实就是交换指针和交换值的区别啊。

B3层 发表时间: 07-03-17 16:21

回复: moyou [moyou]   论坛用户   登录
同意啊同意

B4层 发表时间: 07-03-26 14:25

回复: Ocean [friendship]   论坛用户   登录
lz的主函数为什么不写返回类型啊
我的理解是:
第一个只是交换指针所指的内存空间(一个整型指针存储的是地址,指向一个内存空间)
第二个“*”运算符间址访问交换了指针所指的内容

B5层 发表时间: 07-04-23 21:16

回复: ziaichen [ziaichen]   论坛用户   登录
如果在*前面再加个*,想想会出现什么结果~~~?

B6层 发表时间: 07-04-24 20:18

回复: virgoshaka [virgoshaka]   论坛用户   登录
非法访问。。。

B7层 发表时间: 07-04-25 01:47

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号