取地址符和指针的区别 ?

snfeng 2009-12-19 12:28:17
线性表初始化有以下两个函数:

1、Status InitList(SqList *L)
{ …………}
2、Status InitList(SqList &L)
{ …………}

他们的区别是什么 ?越详细越好 谢谢!
...全文
694 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
arong1234 2009-12-19
这里不是“取地址”,这是引用
  • 打赏
  • 举报
回复
lovesi3344 2009-12-19
引用和地址操作符不一样哦
引用是有类型的 int &a ; 这里是引用
地址操作符是没有类型的(类型在赋值操作符左边) int *ptr = &b ; 这里是地址操作符
  • 打赏
  • 举报
回复
z569362161 2009-12-19
*L)

&L)
都是指针

&是有效的。
  • 打赏
  • 举报
回复
建鼎呓语 2009-12-19
1、Status InitList(SqList *L) 传地址,C语言写法,
调用函数
SqList L, *pL;
InitList(&L);
InitList(pL);
函数内部L->member

2、Status InitList(SqList &L) 传引用,C++写法
调用函数
SqList L, *pL;
InitList(L);
InitList(*pL);
函数内部L.member


也许还会遇到 Status InitList(SqList *&L) 把指针传引用
大致上相当于C语言的Status InitList(SqList **L)
  • 打赏
  • 举报
回复
第一个L可能是空指针,也可能是有效的值。
第二个L肯定是有效的。
  • 打赏
  • 举报
回复
selooloo 2009-12-19
[Quote=引用楼主 snfeng 的回复:]
线性表初始化有以下两个函数:

1、Status InitList(SqList *L)
    {  …………}
2、Status InitList(SqList &L)
    {  …………}

他们的区别是什么 ?越详细越好 谢谢!
[/Quote]
Status InitList(SqList &L)这里的&是占位符,传引用形参,不是取地址符,只是c++里的用法,1的用法在c和 c++都可以
比如SqList L, *pL;
PL=&L;这时&才是取地址符
应用于函数1是这样InitList(pL),InitList(&L)这里的&也是是取地址符,注意这里是调用函数,不是声明函数,注意它和函数2的区别;

应用于函数2是这样InitList(*pL),InitList(L)这里的函数形参类型是SqList,所以pL要加上*,函数1的形参类型SqList *。

两个函数可以达到同样效果
  • 打赏
  • 举报
回复
snfeng 2009-12-19
[Quote=引用 5 楼 arong1234 的回复:]
这里不是“取地址”,这是引用

[/Quote]

在什么地方是取地址?能举个例子吗,谢谢
  • 打赏
  • 举报
回复
发帖
C语言

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2009-12-19 12:28
社区公告
暂无公告