数据结构的引用和调用

xiaoyang13456 2009-07-07 11:04:08
最近在自学数据结构,所用的教材是严蔚敏的。。在书中总是会出现引用调用并返回参数,
实在不太明白,比如 InitList(&L)...里面的&L就是引用调用并返回。。引用的是哪里的L呢?
&L在C语言中不是求L的地址吗?在主函数中L又应该是怎么样来表示的呢?InitList(&L)返回是函数地址呢,
还是L的地址啊?好迷糊啊。。。。想不明白,很郁闷。。麻烦各位了。。。

...全文
296 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
amossavez 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lingyin55 的回复:]
呃。。你说的是c。上面给的链接是c++的。

int a=10;
int b=&a; //这里b就是a的一个别名,以后a=b;//大意了吧

b = 5; //此时a也等于5
引用的一个应用是参数传递,C语言里面要想通过函数改变值只能通过指针。
如果用引用就很容易。

比如:f(int &a)
int c = 10;
f(c);
在f()函数里面对a的值的修改,都可以反映到c变量中。
[/Quote]
....
SML070107 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lansong1 的回复:]
引用 3 楼 lingyin55 的回复:
呃。。你说的是c。上面给的链接是c++的。

int a=10;
int b=&a; //这里b就是a的一个别名,以后a=b;

b = 5; //此时a也等于5
引用的一个应用是参数传递,C语言里面要想通过函数改变值只能通过指针。
如果用引用就很容易。

比如:f(int &a)
int c = 10;
f(c);
在f()函数里面对a的值的修改,都可以反映到c变量中。




貌似int b=&a;这一句有问题,编译不能通…
[/Quote]
当然有问题了,他写错了,应该是int &b=a;
lansong1 2009-07-07
  • 打赏
  • 举报
回复 1
[Quote=引用 3 楼 lingyin55 的回复:]
呃。。你说的是c。上面给的链接是c++的。

int a=10;
int b=&a; //这里b就是a的一个别名,以后a=b;

b = 5; //此时a也等于5
引用的一个应用是参数传递,C语言里面要想通过函数改变值只能通过指针。
如果用引用就很容易。

比如:f(int &a)
int c = 10;
f(c);
在f()函数里面对a的值的修改,都可以反映到c变量中。
[/Quote]


貌似int b=&a;这一句有问题,编译不能通过;cannot convert from 'int *' to 'int'

Fleeboy 2009-07-07
  • 打赏
  • 举报
回复
楼上几位回答得很好。

如果你还有问题,请参考:C/C++中指针和引用之相关问题研究
应该会有所收获
lingyin55 2009-07-07
  • 打赏
  • 举报
回复
呃。。你说的是c。上面给的链接是c++的。

int a=10;
int b=&a; //这里b就是a的一个别名,以后a=b;

b = 5; //此时a也等于5
引用的一个应用是参数传递,C语言里面要想通过函数改变值只能通过指针。
如果用引用就很容易。

比如:f(int &a)
int c = 10;
f(c);
在f()函数里面对a的值的修改,都可以反映到c变量中。
lingyin55 2009-07-07
  • 打赏
  • 举报
回复
int a = 3;
int *p = &a;///这里的&表取地址

int b = 3;
int c = &b;///这里的&表引用,引用必须初始化,且不能为空

参考资料
http://www.kuqin.com/language/20071119/2427.html
baihacker 2009-07-07
  • 打赏
  • 举报
回复 1

//下面的程序能说明问题.
#include <iostream>
using namespace std;

void foo1(int x){x = 1;}
void foo2(int& x) {x = 2;}

int main()
{
int y = 0;
foo1(y);
cout << y << endl;
foo2(y);
cout << y << endl;
return 0;
}
nouce 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lingyin55 的回复:]
int a = 3;
int *p = &a;///这里的&表取地址

int b = 3;
int c = &b;///这里的&表引用,引用必须初始化,且不能为空

参考资料
http://www.kuqin.com/language/20071119/2427.html
[/Quote]
支持!
xiaoyang13456 2009-07-07
  • 打赏
  • 举报
回复
书中的基本上都是伪代码,真正的代码需要自己编写。

返回类型需要自己定义 。书中基本上都是status 他是让你自己定义宏 define status type

形参 例如&S,是让你把地址传递进去,是用的C++中的引用。如果你用C编写需使用指针。-------以上引用的是别的贴子上面得回答。。。看了些资料。。现在还是。似懂非懂。。自己C基础学的不好。回去再看看C指针与函数了。
ies_sweet 2009-07-07
  • 打赏
  • 举报
回复
& 在C和C++里面用法是不是有些差异呢?
mengjfu 2009-07-07
  • 打赏
  • 举报
回复
引用的是哪里的L呢?
查看调用函数便知。
&L在C语言中不是求L的地址吗?在主函数中L又应该是怎么样来表示的呢?
&有多种用法, 取地址 引用 位与
InitList(&L)返回是函数地址呢, 还是L的地址啊?
查看InitList()函数返回类型。
allen1986 2009-07-07
  • 打赏
  • 举报
回复
&L做为函数的形参时,表示该参数是一个引用型的参数。void fun(int &L);
这里的L就是一个整形的引用。引用谁,就看调用函数时传谁的值。
&做为运算符时表示取地址符。
其实引用是C++里面的内容。你刚说的教材应该是偏向于C的。你可以找一本C++的教材,里面有关于引用的讲解。
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaoyang13456 的帖子:]
最近在自学数据结构,所用的教材是严蔚敏的。。在书中总是会出现引用调用并返回参数,
实在不太明白,比如 InitList(&L)...里面的&L就是引用调用并返回。。引用的是哪里的L呢?
&L在C语言中不是求L的地址吗?在主函数中L又应该是怎么样来表示的呢?InitList(&L)返回是函数地址呢,
还是L的地址啊?好迷糊啊。。。。想不明白,很郁闷。。麻烦各位了。。。
[/Quote]

自己翻番书吧,。
&有多种用法,
1.取地址
2.引用
3.位与

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧