【数据结构】关于引用的问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:20:39
连接两个串
typedef struct
{
char data[MaxSize];
int len;
}SString;
int concat(CString *s1,SString *s2,SString *&s)
/*这里使用了引用,应该是用来改变指针本身s在存放的地址吗?我怎么看不出来,s中的地址有什么改变呢,希望高手说明是不是s中存放的地址改变了,从哪里看出来
如果不是我说的改变了s中的地址,&有什么作用?
*/
{
int i ;
if(s1->len+s2->len>MaxSize)
return 0;
else
{
for(i=0;i<s1->len;i++)
s->data[i]=s1->data[i];
for(i=0;i<s2->len;i++)
s->data[s1->len+i]=s2->data[i];
s->len=s1->len+s2->len;
return 1;
}
}
我确信

地址都是会变的,一个是直接用指针变量,一个是引用
int concat(CString *s1,SString *s2,SString *&s) 这两个的作用是一样的,唯一的区别是
SString *s2是创建了一个指针变量,然后在调用这个函数的时候,就指向函数里的参数
SString *&s 是引用,也就是不会创建指针变量,而s是我们在调用的时候
函数里面参数的别名

比如

concat(a,b,c) 调用的时候创建了指针s1,s2指向了a,b
而s是C的别名,其实也就是C