c++ 函数里的引用和指针

2025-04-13 16:17:36
推荐回答(2个)
回答(1):

void SwapString(char *&str1,char *&str2)
{
char *str3=str1;
str1=str2;
str2=str3;
}
void SwapString2(char *str1,char *str2)
{
char *str3=str1;
str1=str2;
str2=str3;
}
int _tmain(int argc, _TCHAR* argv[])
{
char* str1 = "str1";
char* str2 = "str2";
cout<<"str1,value:"< cout<<"str1,value:"< SwapString(str1,str2);
cout<<"str1,value:"< cout<<"str1,value:"< SwapString2(str1,str2);
cout<<"str1,value:"< cout<<"str1,value:"< cin>>str1;
return 0;
}
在此定义了两个指针str1,str2, SwapString2(char *str1,char *str2)交换的是两个指针指指向的值,而不是两个指针的地址

回答(2):

指针引用的目的是为了将指针的作用域传递进函数,如果按
void SwapString(char *str1,char *str2)
{
char *str3=str1;
str1=str2;
str2=str3;
}
在参数传递进入函数后会创建str1,str2的副本,所有对str1 str2的操作是对它的副本进行操作而不是对str1 str2本身进行。那么函数的改变也只能在函数里面显现。
而定义成char*&的形参方式,意味着参数传递进入函数后将不会创建实参的副本,所有对参数的操作将直接影响到函数体外面的参数。