关于C语言的函数

[复制链接]
查看11 | 回复5 | 2013-1-30 19:44:38 | 显示全部楼层 |阅读模式
void swap1(int *a,int *b){int t=*a;*a=*b;*b=t; return;}//使用方法swap1(&a,&b);这种是C的标准做法,利用指针在C或是C++中都能使用void swap2(int &a,int &b){int t=a; a=b; b=t; return;}//使用方法swap2(a,b);这种是利用引用,这个只能在C++中使用,因为C里根本就没有引用类型两者效果上讲是基本等效的,效率么(我不是专门学C++的,也不想得罪哪位路过的C++大牛,所以...)两者详细区别用文字解释起来比较麻烦,lz可以自行百度 指针 引用类型 传值调用 引用调用 等词条...
回复

使用道具 举报

千问 | 2013-1-30 19:44:38 | 显示全部楼层
印象中C++才有引用类型(也就是swap2的两个参数的类型)啊……二者等效,但是swap1写起来稍微麻烦一点,也容易出错(可以理解成swap2将由编译器在编译时,而非程序员在写代码时,转换成与swap1相同的形式)……...
回复

使用道具 举报

千问 | 2013-1-30 19:44:38 | 显示全部楼层
*是指针,&是引用,语法上有区别,不能混用,但是从根本上说引用和指针是一回事情。...
回复

使用道具 举报

千问 | 2013-1-30 19:44:38 | 显示全部楼层
在c里面,第一个是把变量的地址穿进去,然后交换地址中的内容,第二个能不能运行过还是个问题呢,不过我也不清楚...
回复

使用道具 举报

千问 | 2013-1-30 19:44:38 | 显示全部楼层
楼上正解,swap1是真正把变量的值给交换了,但是swap2只是改变了指向。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行