我是C ++的新手。我想制作从数组中创建所有可能单词的程序。问题是我不知道如何将数组的值从一个函数传递到另一个函数。
#include <iostream>
using namespace std;
void insertArray(int sizeOfArray);
void outputArray(int sizeOfArray, char * aray);
int main(){
insertArray(5);
return 0;
}
void insertArray(int sizeOfArray){
char value;
char *arrayOfletters = new char[sizeOfArray];
for(int i = 0; i < sizeOfArray; i++){
cout << "Input letter number: " << i+1 << endl;
cin >> value;
if(value >= 'a' && value <= 'z' || value >= 'A' && value <= 'Z')
arrayOfletters[i] = value;
else {
cout << "Inputed value is wrong. Try again!" << endl;
i--;
}
}
}
void outputArray(int sizeOfArray, char * array) {
for(int i = 0; i < sizeOfArray; i++)
cout << array[i];
}
现在我想将insertArray
函数的值传递给outputArray
函数来检查它是如何工作的。
答案 0 :(得分:2)
不要打扰旧式阵列。只需使用std::vector
(或std::array
)并像传递任何其他变量一样传递它。
如果insertArray
刚刚返回了一个值向量,您可以在变量中捕获该值,然后将其传递给outputArray
。
auto val = inputArray(...);
outputArray(val);
答案 1 :(得分:1)
你可以采取两种方式
让insert函数返回一个数组。
char* insertArray(int sizeOfArray){
char value;
char *arrayOfletters = new char[sizeOfArray];
for(int i = 0; i < sizeOfArray; i++){
cout << "Input letter number: " << i+1 << endl;
cin >> value;
if(value >= 'a' && value <= 'z' || value >= 'A' && value <= 'Z')
arrayOfletters[i] = value;
else {
cout << "Inputed value is wrong. Try again!" << endl;
i--;
}
}
return arrayOfletters;
}
使用参数传递数组,因为它是一个指针,内容在数组内/外共享:
void insertArray(int sizeOfArray, char*& arrayOfletters){
char value;
arrayOfletters = new char[sizeOfArray];
for(int i = 0; i < sizeOfArray; i++){
cout << "Input letter number: " << i+1 << endl;
cin >> value;
if(value >= 'a' && value <= 'z' || value >= 'A' && value <= 'Z')
arrayOfletters[i] = value;
else {
cout << "Inputed value is wrong. Try again!" << endl;
i--;
}
}
}
两者都应该有效
答案 2 :(得分:0)
我建议将分配并填充insertArray
的数组作为返回值返回。请注意,您还必须释放insertArray
中分配的内存。您可以按照以下方式调整您的计划:
char* insertArray(int sizeOfArray);
void outputArray(int sizeOfArray, char * aray);
int main(){
char* array = insertArray(5);
outputArray(5, array);
delete[] array;
return 0;
}
char* insertArray(int sizeOfArray){
char value;
char *arrayOfletters = new char[sizeOfArray];
...
return arrayOfLetters;
}
答案 3 :(得分:0)
您可以在insertArray函数中调用outputArray,如下所示:
void insertArray(int sizeOfArray){
char value;
char *arrayOfletters = new char[sizeOfArray];
for(int i = 0; i < sizeOfArray; i++){
cout << "Input letter number: " << i+1 << endl;
cin >> value;
if(value >= 'a' && value <= 'z' || value >= 'A' && value <= 'Z')
arrayOfletters[i] = value;
else {
cout << "Inputed value is wrong. Try again!" << endl;
i--;
}
}
outputArray(sizeOfArray, arrayOfletters);
delete[] arrayOfletters;
}
或者,如果您希望能够从main执行这两个操作,则必须将指针返回到您在insertArray中分配的数组,以便可以从main使用它:
#include <iostream>
using namespace std;
char *insertArray(int sizeOfArray);
void outputArray(int sizeOfArray, char * aray);
int main(){
char *pArray = insertArray(5);
outputArray(sizeOfArray, pArray);
delete[] pArray;
return 0;
}
char *insertArray(int sizeOfArray){
char value;
char *arrayOfletters = new char[sizeOfArray];
for(int i = 0; i < sizeOfArray; i++){
cout << "Input letter number: " << i+1 << endl;
cin >> value;
if(value >= 'a' && value <= 'z' || value >= 'A' && value <= 'Z')
arrayOfletters[i] = value;
else {
cout << "Inputed value is wrong. Try again!" << endl;
i--;
}
}
return arrayOfletters;
}
void outputArray(int sizeOfArray, char * array) {
for(int i = 0; i < sizeOfArray; i++)
cout << array[i];
}
答案 4 :(得分:0)
只需返回arrayOfLetters
- 这是指向内存中的数组 - 返回到main,然后将其作为参数传递给下一个函数,如下所示:
char* myCharArray = insertArray(5);
outputArray(5, myCharArray)
重要:
确保在函数或主函数中的某个地方调用delete[] myCharArray
,否则将泄漏内存。