求C语言高手解释形参sqlist *L sqlist &L的区别

我的理解是是initlist(sqlist*L)是重新分配了地址建立的形参,程序最后需要ruturn。而&L是实在的改变了实参的内容。有的程序是L->num[],有的是L... 我的理解是是initlist(sqlist *L)是重新分配了地址建立的形参,程序最后需要ruturn。
而&L是实在的改变了实参的内容。
有的程序是L->num[],有的是L.num[].还是(*L).num,...它们与*L &L有什么联系?
展开
 我来答
AA5956
2015-07-31 · TA获得超过1869个赞
知道小有建树答主
回答量:705
采纳率:72%
帮助的人:473万
展开全部
这个定义应该是C++里面的引用的定义。

因为C里面&只是一个取地址的符号。而且C里面不会在生命的时候去去一个变量的地址
sqlist *L 是声明一个指针
sqlist &L 是声明一个引用
指针与引用的区别在于
(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针.

由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值.

String & rs = string1;

由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效性.

(2)指针可以被重新赋值而reference则总是指向最初或地的对象.

(3)必须使用reference的场合. Operator[] 操作符 由于该操作符很特别地必须返回 [能够被当做assignment 赋值对象] 的东西,所以需要给他返回一个 reference.

(4)其实引用在函数的参数中使用很经常.

void Get***(const int& a) //这样使用了引用有可以保证不修改被引用的值

{

}
liu1529
2013-09-21
知道答主
回答量:16
采纳率:0%
帮助的人:29.6万
展开全部
  1. sqlist 是一个结构体

  2. sqlist *L 表示定义了一个指向sqlist类型的指针

  3. &L 表示L的指针

  4. L->num[]这儿的L定义为:sqlist *L,而L.num[]这儿的L定义为struct sqlist L。

  5. 当L定义为sqlist *L时,L->num[]等同于(*L).num[],只是前者书写更方便

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三只熊47
2013-09-21 · TA获得超过125个赞
知道答主
回答量:82
采纳率:0%
帮助的人:44.5万
展开全部
一个是指针,一个是引用,两者最大的却别就是一个分配内存,另一个不分配,指针要分配内存存放变量的地址,引用就是变量的一个别名,就和数据库中的同义词一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式