在C语言里向函数传递的是“&+参数”是什么意思??

看到一个程序
其中有一个函数的声明是
void function(SpList &dataList)
SpList里有一个数组和两条数组的信息信息
typedef struct {
int *elem;
int length;
int listsize;
}SqList;
调用的时候传递的是一个SqList型的参数
函数体里还有状似dataList.elem[i]这样的语句
编译全部通过
如果传引用的话,应该用的是*SqList吧?那么&SqList是什么意思呀!

是引用,c++中的概念,int a;int &b=a;这就声明了b是a的引用,经过这样的声明后使用a或b的作用相同,都代表同一变量。对变量声明一个引用,并不另开辟内存单元。函数参数传递有两种情况,有一般的将变量名作为参数,这时传递给形参的是变量的值,在执行函数的时候,形参的值发生的变化并不传递给实参。传递变量的指针,使形参得到一个变量的地址,这时形参指针变量指向实参变量单元。引进引用后,函数参数的第三种传递方式就是传送变量的别名。 代替地址的传递,更加简单
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-20

C语言里没有"&+参数",只有"&参数"——这里的参数是指变量名或常量。有两种情况:

    当"&参数"前面还有参数(变量或常量)时,&是“按位与"的意思,即将&前后两个数据的二进制位对应进行"与"操作,比如3&4就是011&100=0。

    当"&参数"前面没有参数时&是单目运算符,是取&后面变量的地址的意思,这时&后面的参数必须是能够取地址的目标,否则出错。比如char a,*p=&a,*q="fjks";正确,而若int *p=&3;则错误,因为立即数常量3没有地址。

本回答被网友采纳
第2个回答  2010-10-24
一个类型前面加&就是指取其地址
不过像您这个例子的话,我个人感觉也是*SqList.如果没有特殊情况的话.
相似回答