严蔚敏的C语言版《数据结构》算法中形参中的&是指C语言里面的地址还是C++中的引用?

jjdelphi 2005-09-25 11:30:53
清华大学出版1997年4月第1版 严蔚敏、吴伟民的C语言版《数据结构》
算法中的形参列表中的参数经常出现&,不知道这个地方的&是表示这个地方应该传入一个指针?还是表示的是C++中的引用?
C语言中形参表示指针用*,实参中的地址才用&,形参中用&的是C++里面的引用。
...全文
467 24 打赏 收藏 举报
写回复
24 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
greenteanet 2005-10-31
是引用来的
  • 打赏
  • 举报
回复
aniude 2005-10-30
学习的时候关系不大吧??
  • 打赏
  • 举报
回复
passby12 2005-10-30
&在C语言中是指的地址,传入的实参应该为地址或数组名
  • 打赏
  • 举报
回复
lvyao1011 2005-10-09
在形参里面出现应该就是引用
  • 打赏
  • 举报
回复
DooDu 2005-10-08
引用。
  • 打赏
  • 举报
回复
DooDu 2005-10-08
typedef int ElemType;

// c2-2.h 线性表的单链表存储结构
struct LNode
{
ElemType data;
LNode *next;
};
typedef LNode *LinkList; // 另一种定义LinkList的方法


Status ListInsert_CL(LinkList &L,int i,ElemType e) // 改变L
{ // 在L的第i个位置之前插入元素e
LinkList p=L->next,s; // p指向头结点
int j=0;
if(i<=0||i>ListLength_CL(L)+1) // 无法在第i个元素之前插入
return ERROR;
while(j<i-1) // 寻找第i-1个结点
{
p=p->next;
j++;
}
s=(LinkList)malloc(sizeof(LNode)); // 生成新结点
s->data=e; // 插入L中
s->next=p->next;
p->next=s;
if(p==L) // 改变尾结点
L=s;
return OK;
}
  • 打赏
  • 举报
回复 2
happycock 2005-10-08
总结一下,C语言没有引用,严老师要是坚持按照C的语法来写,就会在很多算法里面出现很多星星,对于连一个星都搞不清楚的学生们来说实在太辛苦了,其实大家也都很清楚星星的个数和理解程序的难度是非线性的关系,所以,把C++的引用搬过来了。如果你用C++来写这些完全不用考虑,如果你用C来写Status ListInsert_Sq(SqList &L, int i, Elemtype e){
....
}
实际实现的时候就要这样:
Status ListInsert_Sq(SqList* pL, int i, Elemtype e)
{
pL->....
}
调用的时候这样ListInsert_Sq(&L,i,e)
如果再不明白我没办法了。
最后一句话,直接拿C++写算了,就不用在这上面纠缠了。
  • 打赏
  • 举报
回复
tatbaby 2005-10-08
Status ListInsert_Sq(SqList &L, int i, Elemtype e)
//引用。函数中参数使用方法:L.Length
而:
Status ListInsert_Sq(SqList *L, int i, Elemtype e)
//指针。函数中参数使用方法:(*L).Length 或L->Length


----------------------------------------------------
比如算法2.4,在顺序线性表L中第i个位置之前插入新的元素e
Status ListInsert_Sq(SqList &L, int i, Elemtype e){
....
}
其中,SqList &L的L是指针还是一个引用呢?
  • 打赏
  • 举报
回复
zachary7833 2005-10-04
形参中用&都是表示引用。
形参经常* &
如果理解成取地址不是互相抵消了,^_^
  • 打赏
  • 举报
回复
styfwz 2005-10-02
如果是函数参数,那么就不太可能是地址了,我觉得
  • 打赏
  • 举报
回复
happycock 2005-10-01
C的哲学就是精练,但我还是觉得把引用加入语法中会好一点。
  • 打赏
  • 举报
回复
happycock 2005-10-01
其实就是引用,就是说,执行这个函数是,传入的参数是要发生改变的。具体实现的时候,需要传入对应变量的地址,也就是指向这个变量的指针。所以在C程序中带两个*的参数是很常见的,C++的引用表达的就是传址调用(实际上引用的作用不只于次,用的好你会发现很有趣),你要是到C++还写这么多*就说不过去了。
  • 打赏
  • 举报
回复
aaalife 2005-10-01
你提到的地方是引用...

当然可以用指针啊...

引用方便一点啊...相对来说 引用应该是更好理解啊...类似于一个别名而已...和使用指针操作的结果是一样的...

ps:楼上的在说绕口令?? -_- 哈哈...

happy__888([顾问团]寻开心) 和 luKlu(luKlu) 说的对...'&'有两个含义...具体情况具体分析...
  • 打赏
  • 举报
回复
97ce_twinkle 2005-09-29
约定而已
  • 打赏
  • 举报
回复
luKlu 2005-09-29
& 符号 c++编译器的原则是 在定义使用时 对已经初始化(定义 声明)的名字是取地址
对未初始化的名字定义为引用 注意 引用不能被引用 引用无地址 引用就是编译器里面的一个别名 需要在使用前完成初始化 目的是为了屏蔽指针的不方便性
  • 打赏
  • 举报
回复
dragonfly001 2005-09-26
是引用
严蔚敏的C语言版《数据结构》算法中代碼都是偽C代碼,其實是C++代碼了
  • 打赏
  • 举报
回复
jjdelphi 2005-09-26
没有仔细看书,昨天晚上看第一章1.3 抽象数据类型的表示与实现 有说明的:“为了便于算法描述,除了值调用方式外,增添了C++语言的引用调用的参数传递方式。在形参表中,以&打头的参数即为引用参数。”

不过还是不大明白,为什么要用C++的引用,使用C中的指针不行吗?
  • 打赏
  • 举报
回复
寻开心 2005-09-26
是引用还是取地址,你要看在哪里用的

在定义变量的时候是引用,在使用变量的时候是取地址
比如
void func(int& a, int b); // a就是引用
在函数体里面 c = &a 就是取地址了
另外:
int a;
int &i = a; // 引用
int *b = &a; // 取地址

  • 打赏
  • 举报
回复
galois_godel 2005-09-26
伪代码,明白意思就可以拉
  • 打赏
  • 举报
回复
jjdelphi 2005-09-25
比如算法2.4,在顺序线性表L中第i个位置之前插入新的元素e
Status ListInsert_Sq(SqList &L, int i, Elemtype e){
....
}
其中,SqList &L的L是指针还是一个引用呢?
  • 打赏
  • 举报
回复
加载更多回复(4)
相关推荐
发帖
数据结构与算法

3.2w+

社区成员

数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
帖子事件
创建了帖子
2005-09-25 11:30
社区公告
暂无公告