求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有什么联系? 展开
而&L是实在的改变了实参的内容。
有的程序是L->num[],有的是L.num[].还是(*L).num,...它们与*L &L有什么联系? 展开
3个回答
展开全部
这个定义应该是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) //这样使用了引用有可以保证不修改被引用的值
{
}
因为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) //这样使用了引用有可以保证不修改被引用的值
{
}
展开全部
sqlist 是一个结构体
sqlist *L 表示定义了一个指向sqlist类型的指针
&L 表示L的指针
L->num[]这儿的L定义为:sqlist *L,而L.num[]这儿的L定义为struct sqlist L。
当L定义为sqlist *L时,L->num[]等同于(*L).num[],只是前者书写更方便
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个是指针,一个是引用,两者最大的却别就是一个分配内存,另一个不分配,指针要分配内存存放变量的地址,引用就是变量的一个别名,就和数据库中的同义词一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询