将数组传递给main并在main中声明数组有什么区别?使用每个结构有什么好处?例如,在第一个代码示例中,我将数组传递给函数,在第二个代码示例中,我将其声明为main。有什么区别?
版本1:
#include <iostream>
using namespace std;
void printArray(int theArray[], int sizeofArray);
//passive arrays to function..
int main() {
int arr[3] = {44,23,22};
int arry[5] = {56,23,11,23,55};
printArray(arr, 3);
}
void printArray(int theArray[], int sizeofArray){
for(int x =0;x<sizeofArray; x++){
cout << theArray[x] << endl;
}
}
第2版:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int arr[3] = {44,23,22};
int arry[5] = {56,23,11,23,55};
for(int x=0;x<3;x++){
cout << arr[x] << endl;
}
}
答案 0 :(得分:4)
正如Juanchopanza指出的,在这两种情况下,你的数组都在main
函数内声明。
主要区别在于您的代码组织。函数的目的是允许您对不同的参数执行任务。在第二个示例中,您仍然可以执行printArray(arry, 5)
打印第二个数组的内容,如下所示:
#include <iostream>
using namespace std;
void printArray(int theArray[], int sizeofArray);
//passive arrays to function..
int main() {
int arr[3] = {44,23,22};
int arry[5] = {56,23,11,23,55};
printArray(arr, 3);
printArray(arry, 5); // Let's see what's inside arry too !
}
void printArray(int theArray[], int sizeofArray){
for(int x =0;x<sizeofArray; x++){
cout << theArray[x] << endl;
}
}
如果您想在第一个示例中执行此操作,则必须复制/粘贴循环,这将导致代码看起来不那么难看:
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int arr[3] = {44,23,22};
int arry[5] = {56,23,11,23,55};
for(int x=0;x<3;x++){
cout << arr[x] << endl;
}
for(int x=0;x<5;x++) { // Here
cout << arry[x] << endl;
}
}
如果必须打印十个不同的阵列,会发生什么?您是希望使用不同的参数调用函数printArray
的十倍,还是将循环复制/粘贴十次?