将数组传递给函数和在main中声明数组有什么区别?

时间:2015-07-30 13:36:27

标签: c++ arrays function

将数组传递给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;
    }
}

1 个答案:

答案 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的十倍,还是将循环复制/粘贴十次?