这段代码的错误在哪里
#include<iostream>#include<string>
using namespace std;
int strcmp(string*arr)
{
if(arr=arr)
return 0;
if(arr<arr)
return -1;
if(arr>arr)
return 1;
}
int main()
{
string*arr;
for(int i=0;i<2;i++)
{
cin>>arr;
}
strcmp(arr);
return 0;
} 这段代码有几个错误:
1. 在声明和定义 strcmp 函数时,参数类型应该是 string* arr 而不是 string*arr 。正确的声明应该是 int strcmp(string* arr) 。
2. 在 strcmp 函数中,比较字符串相等的语句应该使用 == 而不是 = 。因此, if(arr=arr) 应该改为 if(arr==arr) 。
3. 在 strcmp 函数中,比较字符串大小的语句应该使用 < 和 > 而不是 < 和 > 。因此, if(arr<arr) 和 if(arr>arr) 应该分别改为 if(*arr<*arr) 和 if(*arr>*arr) 。
4. 在 main 函数中,应该使用 new 关键字为 arr 数组中的每个元素分配内存,以便存储输入的字符串。可以使用 arr[ i] = new string; 来分配内存。
5. 在 main 函数结束前,应该使用 delete 关键字释放为 arr 数组分配的内存,以避免内存泄漏。可以使用 delete arr[ i]; 来释放内存。
下面是修改后的代码:
#include<iostream>
#include<string>
using namespace std;
int strcmp(string* arr)
{
if(*arr == *arr)
return 0;
if(*arr < *arr)
return -1;
if(*arr > *arr)
return 1;
}
int main()
{
string* arr;
for(int i=0; i<2; i++)
{
arr[ i] = new string;
cin >> *arr[ i];
}
int result = strcmp(arr);
// 释放内存
for(int i=0; i<2; i++)
{
delete arr[ i];
}
return 0;
}
这样,代码就可以正确地比较输入的两个字符串并返回结果了。
页:
[1]