所以这是一个家庭作业,可能会有一些荒谬的限制,但请耐心等待。这只是一个简单的功能,但已经绘制出来。我需要通过赋值运算符返回一个字符数组,但它似乎根本不起作用。我试过指针,但没有运气。
#include <iostream>
using namespace std;
char* findMax(char*, char*);
int main()
{
char aArray[50] = "Hello World",
bArray[50] = "dlroW olleH",
maxArray[50];
maxArray[50] = findMax(aArray, bArray);
cout << maxArray << " is the bigger of the 2 strings" << endl;
return 0;
}
char* findMax(char* strA, char* strB){
char* maxStr;
if(strcmp(strA, strB) < 1)
maxStr = strB;
else
maxStr = strA;
return maxStr;
}
如果我输出findMax()
的返回值,它会打印出bArray的值,但是通过赋值运算符将其设置为maxArray根本不起作用。
答案 0 :(得分:2)
有两种方法可以做到这一点。如上所述,maxArray
是一个字符数组。无法直接将数组分配给。相反,您需要逐个复制每个字符。您可以通过循环或通过调用strcpy
标准库函数来执行此操作。
char maxArray[50];
strcpy(findMax(aArray, bArray), maxArray);
另一种方法是将maxArray
的声明更改为char *
,一个指针。可以直接指定指针,而无需循环或调用函数。
char *maxArray;
maxArray = findMax(aArray, bArray);
这与第一种解决方案之间的区别是微妙的,但很重要。使用char maxArray[50]
,您实际上正在分配第三个包含50个字符的数组,与aArray
和bArray
分开。这个数组有自己的存储空间,它有50个字节的内存。
在第二个中,您不会创建第三个数组。您只需创建一个指针,该指针可以指向已存在的其他数组。分配后,maxArray
成为对aArray
或bArray
的间接引用。它不是其中一个数组的副本,指向其中一个数组。