将动态分配的数组从函数传递到另一个函数 我是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]; } #包括 使用名称空间std; void insertArray(int-sizeOfArray); 无效输出阵列(int-sizeOfArray,char*aray); int main(){ 插页(5); 返回0; } void insertArray(int-sizeOfArray){ 字符值; char*arrayofleters=新字符[sizeOfArray]; 对于(int i=0;i。C++中的任何函数都允许返回值。我对函数类型旁边的*符号感到惊讶。BTW.谢谢VE!你忘了调用删除[]/Cord>。这就是为什么使用RAII对象避免了此类问题(如 STD:UngQuyPPTR , vector < /COD>或 STD::String )哦,同意在C++中有更好的方法来做这件事,我尽量尽可能地坚持现有代码。
不要使用旧式数组。只需使用将动态分配的数组从函数传递到另一个函数 我是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]; } #包括 使用名称空间std; void insertArray(int-sizeOfArray); 无效输出阵列(int-sizeOfArray,char*aray); int main(){ 插页(5); 返回0; } void insertArray(int-sizeOfArray){ 字符值; char*arrayofleters=新字符[sizeOfArray]; 对于(int i=0;i。C++中的任何函数都允许返回值。我对函数类型旁边的*符号感到惊讶。BTW.谢谢VE!你忘了调用删除[]/Cord>。这就是为什么使用RAII对象避免了此类问题(如 STD:UngQuyPPTR , vector < /COD>或 STD::String )哦,同意在C++中有更好的方法来做这件事,我尽量尽可能地坚持现有代码。,c++,C++,不要使用旧式数组。只需使用std::vector(或std::array)并像传递任何其他变量一样传递它 如果insertArray刚刚返回了一个值向量,您可以在变量中捕获它,然后将其传递给outputArray auto val = inputArray(...); outputArray(val); 有两种方法可以做到 让insert函数返回一个数组 char* insertArray(int sizeOfArray){ char value; char *arrayOfl
std::vector
(或std::array
)并像传递任何其他变量一样传递它
如果insertArray
刚刚返回了一个值向量,您可以在变量中捕获它,然后将其传递给outputArray
auto val = inputArray(...);
outputArray(val);
有两种方法可以做到
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;
}
char*insertArray(int-sizeOfArray){
字符值;
char*arrayofleters=新字符[sizeOfArray];
对于(int i=0;i cout='a'&&value='a'&&value我建议将分配并填入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;
}
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;
}
您可以从insertArray函数中调用outputArray,如下所示:
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;
}
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;
}
void insertArray(int-sizeOfArray){
字符值;
char*arrayofleters=新字符[sizeOfArray];
对于(int i=0;i cout='a'&&value='a'&&value只需返回arrayOfLetters
——它指向内存中的数组——返回到main,然后将其作为参数传递给下一个函数,如下所示:
char*myCharArray=insertArray(5);
输出阵列(5,myCharArray)
重要:
请确保在函数或主函数中调用某个函数“<代码>删除”[/MyCAR] >或者将泄漏内存。你尝试了什么?为什么没有工作?在C++中,你应该使用<代码> STD::vector < /代码>。这应该是一个注释——它不回答OP的问题。“不要打扰旧的C样式数组”。,为什么是旧的?在C语言中,这不是旧的。如果这是为了学习的目的,了解std::vector背后的支持很重要。@Stargateur“旧”如“有更新更好的替代品可用(std::array
和std::vector
)这是C++的,不是C.J.JePujl非常基于意见的……而且这是C++的一部分。所以你的句子应该是“不要去打扰老C++样式数组”。“。感谢您理解我的观点。第二个不起作用,因为您必须将指针传递给指针。请注意,您将覆盖char*arrayOfletters
并分配新字符[…]我们可以通过引用来传递它。正确的,我们可以通过第一个解决方案的名字来命名。我想多读一点。“KoRADODO我认为它没有比名字更吸引人的名字。返回一个对象< /代码>。C++中的任何函数都允许返回值。我对函数类型旁边的*符号感到惊讶。BTW.谢谢VE!你忘了调用<代码>删除[]/Cord>。这就是为什么使用RAII对象避免了此类问题(如<代码> STD:UngQuyPPTR <代码>,<代码> vector < /COD>或<代码> STD::String )哦,同意在C++中有更好的方法来做这件事,我尽量尽可能地坚持现有代码。