| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:这个符号不知道有什么作用,帮忙解释一下
只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
收藏
已结贴  问题点数:8 回复次数:9 
这个符号不知道有什么作用,帮忙解释一下
#include<stdio.h>
void swap(int &p1,int &p2)
{
    int temp;
    temp=p1;
    p1=p2;
    p2=temp;
}
int main()
{
    void swap(int &p1,int &p2);
    int a,b;
    printf("请输入a,b:");
    scanf("%d%d",&a,&b);
    printf("交换前的a=%d,b=%d\n",a,b);
    swap(a,b);
    printf("交换后的a=%d,b=%d\n",a,b);
    return 0;
}
加颜色的那部分,我不知道它有什么作用,听师兄说那个符号是引用,但说到这里,我就不明白void swap()这个函数的主体里面的交换过程了,求解答
搜索更多相关主题的帖子: include return 
2012-12-17 14:12
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:1 
这是C++里面的东西 貌似不是C语言里面的罢 如果用C语言实现的话要用指针 关于这个 引用 可以看C++的书

貌似有人说 引用本质就是用指针实现的 不知道对不对。。
2012-12-17 14:15
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
除了2个地址符没见哪里带颜色啊,难道是地址符不懂??

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-17 14:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:1 
程序代码:
#include <stdio.h>

void Add1(int x)
{    //参数传递不能改变参数
    x = x + 1;
}
void Add2(int &x)
{    //引用时参数值改变
    x = x + 1;
}
int main()
{
    int a = 0;
    printf("%d\n", a);
    Add1(a);
    printf("%d\n", a);
    Add2(a);
    printf("%d\n", a);
    return 0;
}
看楼主代码,这个&在这应该是引用,是C++里面的东西

所谓引用,就是说通过在该函数内的操作,可以使参数发生变化。具体可以试下这个代码


[fly]存在即是合理[/fly]
2012-12-17 14:21
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
这是引用?C++里面的?但我不太会使用这个&符号,只知道其一不知其二啊,能写一段代码来解释一番吗

思考赐予新生,时间在于定义
2012-12-17 14:52
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:4 
fun(int &a,int &b);   main(x,y);
是引用,实参看似传值,其实传的是实参变量的真正内存地址,没有在堆栈中另外开辟空间来存放这个地址,也就是直接使用这个地址,a就是x,b就是y,相当于别名,在fun中直接给a,b赋值,就是修改实参的值,相当于直接寻址

和指针的区别就是:
形式上,fun(int *a,int *b);   main(&x,&y);不同,
本质上,指针的传地址需要在堆栈中另外开辟空间来存放这个地址,a,b是两个指针,保存传递的地址,对a,b指向地址的值修改,才是对实参进行修改,相当于间接寻址
收到的鲜花
  • love云彩2012-12-17 17:30 送鲜花  3朵   附言:我很赞同

小小战士,战士中的战斗机!
2012-12-17 15:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
是引用,在函数swap()中,形参p1、p2就是实参a、b的真身——名称不同,但实质是同一个东西。引用比指针好用之处是不需要使用*号解引用就可以操纵数据的内容,不涉及地址。

授人以渔,不授人以鱼。
2012-12-17 15:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在有垃圾回收机制的环境中,不要乱用指针,因为变量的地址随时可能改变,而那是程序员不知道的,使用引用可以保证不管地址怎么变都能寻得着它。

授人以渔,不授人以鱼。
2012-12-17 15:29
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
学习了

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-17 15:39
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
哇,你们太给力了,我懂了,先思考一番,闭门去啦

思考赐予新生,时间在于定义
2012-12-17 17:15
快速回复:这个符号不知道有什么作用,帮忙解释一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025208 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved