2013-11-22 104 views
0

我必須做一個函數來複制數組並返回它。C++給函數返回數組並返回它們

const int HEIGHT = 21; 
const int WIDTH = 16; 
char field [HEIGHT][WIDTH] = { 
    "###############", 
    "#    #", 
    "# ## ### #### #", 
    "# ## ### #### #", 
    "#    #", 
    "# ######## # #", 
    "# #   # #", 
    "# # ##### # #", 
    "# # ##### # #", 
    "# #   # #", 
    "# #   # #", 
    "#    #", 
    "# ## ######## #", 
    "# ## ######## #", 
    "# ## ######## #", 
    "#    #", 
    "# ###  ### #", 
    "# ########### #", 
    "# ########### #", 
    "#    #", 
    "###############", 
}; 

char copyArray(char copyField[][1]) { //Copy the array field to newField and return it to main 

    int i = 0; 
    int j = 0; 

    for (int i = 0; i < HEIGHT; i++) { 
     copyField[i][j] = field[i][j]; 

     for (int j = 0; j < WIDTH; j++) 
      copyField[i][j] = field[i][j]; 
    } 
    /* for (int i = 0; i < HEIGHT; i++) { 
     cout << copyField[i] << endl; 
    } */ 
    return copyField[i][j]; 
} 

int main() { 
    //char newField[HEIGHT][WIDTH] = copyArray(); 
    //cout << newField[1][1] << endl; 
    int i = 0; 
    int j = 0; 
    char copyField[HEIGHT][WIDTH]= copyArray(*copyField[][1]); 
    return 0; 
} 

我的問題是如何將copyArray從主函數傳遞給copyArray函數,以及如何返回它? 複製部分現在工作正常,我測試了它通過copyArray函數中的char copyArray [HEIGHT] [WIDTH]將其打印在那裏。 我知道向量和memcpy工作得更好,更容易,但我必須使用它。

+1

無法將數組按值傳遞給函數。也不可能通過函數的值返回一個數組。當然,可以將一個指向數組的指針傳遞給函數,並讓該函數修改該數組,但這並不嚴格地從函數返回數組。在這類問題中,你必須非常小心地使用術語。 – john

回答

0

這個例子清楚地說明了如何給函數賦數組並返回它們。

#include <stdio.h> 
#include <math.h> 

double* func(int i, double * mas) 
{ 
    double* mas_new = new double[i]; 
    for(int z=0; z<i; z++) 
     mas_new[z] = sqrt(mas[z]); 
    return mas_new; 
} 

int main() 
{ 
    double mas[] = {1.0, 2.0, 3.0, 4.0}; 
    double* mas_new; 

    for(int z=0; z<4; z++) 
     printf("%f ", mas[z]); 

    mas_new = func(4, mas); 

    for(int z=0; z<4; z++) 
     printf("%f ", mas_new[z]); 

    delete mas_new; 
    return 0; 
} 

有兩種方法可以使數組運行。

void foo (int* arr) { 
.... 
} 

void foo (int arr[]) { 
.....  
} 

除了作爲第二個參數,建議傳遞數組大小。

要從函數返回數組,您應該返回一個指向其第一個元素的指針。