求C语言高手解释形参sqlist *L sqlist &L的区别
发布网友
发布时间:2024-05-02 05:18
我来回答
共3个回答
热心网友
时间:2024-11-03 14:42
这个定义应该是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) //这样使用了引用有可以保证不修改被引用的值
{
}
热心网友
时间:2024-11-03 14:42
sqlist 是一个结构体
sqlist *L 表示定义了一个指向sqlist类型的指针
&L 表示L的指针
L->num[]这儿的L定义为:sqlist *L,而L.num[]这儿的L定义为struct sqlist L。
当L定义为sqlist *L时,L->num[]等同于(*L).num[],只是前者书写更方便
热心网友
时间:2024-11-03 14:43
一个是指针,一个是引用,两者最大的却别就是一个分配内存,另一个不分配,指针要分配内存存放变量的地址,引用就是变量的一个别名,就和数据库中的同义词一样。