看到一个程序
其中有一个函数的声明是
void function(SpList &dataList)
SpList里有一个数组和两条数组的信息信息
typedef struct {
int *elem;
int length;
int listsize;
}SqList;
调用的时候传递的是一个SqList型的参数
函数体里还有状似dataList.elem[i]这样的语句
编译全部通过
如果传引用的话,应该用的是*SqList吧?那么&SqList是什么意思呀!
C语言里没有"&+参数",只有"&参数"——这里的参数是指变量名或常量。有两种情况:
当"&参数"前面还有参数(变量或常量)时,&是“按位与"的意思,即将&前后两个数据的二进制位对应进行"与"操作,比如3&4就是011&100=0。
当"&参数"前面没有参数时&是单目运算符,是取&后面变量的地址的意思,这时&后面的参数必须是能够取地址的目标,否则出错。比如char a,*p=&a,*q="fjks";正确,而若int *p=&3;则错误,因为立即数常量3没有地址。