gpt4 book ai didi

c++ - 通过引用 char 2 维调用字符串不起作用

转载 作者:行者123 更新时间:2023-11-27 23:23:20 25 4
gpt4 key购买 nike

我无法通过引用传递我的字符串,不,这里我使用的是二维字符,我本可以使用字符串,但我想用字符数组来实现,在 swap1 函数中发生字符串交换,在交换中2 整数函数交换发生。字符串交换不起作用。谢谢你的帮助 。任何学习这个的好链接将不胜感激。

void func(int *x,char (*y)[500]);
void swap2(int &x, int &y);
void swap1(char *a,char *b);
int main(void){
char str[4][500];
int a[4];
int i,j;
for(i=0;i<4;i++){
cin>>a[i];
cin>>str[i] ;
}
for(i=0;i<4;i++){
for(j=3;j>0;j--){
if(a[j]<a[j-1]){
swap2(a[j],a[j-1]);
swap1(str[j],str[j-1]);
}
}
}
return 0;
}

void swap1(char *a,char *b){
char *temp = a;
b = a;
a = temp;
}
void swap2(int &x, int &y){
int temp = x;
x = y;
y = temp;
}

最佳答案

您没有像整数交换那样编写指针交换。在你的整数交换中,你正确地使用了引用,但你没有使用你的字符指针。缺少 & 导致 swap1 无操作,因为 str[j]str[j-1] 将在调用完成后保留其原始值。

void swap1(char *&a,char *&b);
//...
void swap1(char *&a,char *&b){
char *temp = a;
b = a;
a = temp;
}

但是,str不是一个指针数组,而是一个数组数组。要使您的代码正常工作,您应该将 str 更改为指针数组。

char *str[4] = { new char[500], new char[500], new char[500], new char[500] };
//...
delete[] str[0];
delete[] str[1];
delete[] str[2];
delete[] str[3];

但这很麻烦,如果您只是更改代码以使用 std::string 代替,您会省去很多麻烦。然后你可以只使用 swap 方法。

void swap1(std::string &a, std::string &b);
//...
std::string str[4];
//...
void swap1(std::string &a, std::string &b) {
a.swap(b);
}

关于c++ - 通过引用 char 2 维调用字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com