簡體   English   中英

如何將數組從函數“返回”到c中的main

[英]How to “return” an array from a function to main in c

我想將數組索引從我的函數傳遞給main。 我怎樣才能做到這一點? 例如:

void randomfunction()
{
    int i;
    char k[20][10];
    for (i=0;i<20;i++)
        strcpy(k[i], "BA");
}
int main(int argc, char *argv[])
{
    int i; for (i=0;i<20;i++) printf("%s",k[i]);
    return 0;
}

我知道對您來說這很簡單,但是我發現了類似的主題,對我來說它們太復雜了。 我只想將k數組傳遞給main。 當然,我的目的不是用“ BA”字符串填充它。

您要動態分配內存。 像這樣:

char** randomfunction() {    
    char **k=malloc(sizeof(char*)*20);
    int i;

    for (i=0;i<20;i++)
        k[i]=malloc(sizeof(char)*10);

    //populate the array

    return k;    
}

int main() {
    char** arr;
    int i;

    arr=randomfunction();

    //do you job

    //now de-allocate the array
    for (i=0;i<20;i++)
        free(arr[i]);        
    free(arr);

    return 0;
}

查看有關mallocfree

這是另一種選擇。 之所以struct是因為struct可以在數組周圍復制,這與數組不同。

typedef struct 
{
    char arr[20][10];
} MyArray;

MyArray random_function(void)
{
    MyArray k;
    for (i=0;i<sizeof k.arr / sizeof k.arr[0];i++)
       strcpy(k.arr[i], "BA");
    return k;
}

int main()
{
     MyArray k = random_function();
}

最簡單的方法:

void randomfunction(char k[][10])
{
    // do stuff
}

int main()
{
    char arr[20][10];
    randomfunction(arr);
}

如果randomfunction需要知道20的維數,則可以將其作為另一個參數傳遞。 (出於歷史原因,將其放入[]無效)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM