通过赋值运算符返回字符数组
Returning Character Array via Assignment Operator
所以这是一项家庭作业,可能会有一些荒谬的约束,但请耐心等待。这只是一个简单的函数,但很长时间。我需要通过赋值运算符返回一个字符数组,但它似乎根本不起作用。我试过指点,但运气不好。
#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根本不起作用。
有两种方法可以做到这一点。正如所写的,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
的间接引用。它不是其中一个数组的副本,它指向其中一个。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?