2015-05-05 5 views
0

Как вернуть массив в C?Как вернуть массив в c?

#include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 

    int main() 

    { 
     int func(int); 
     printf("%d",func(1)); 

    } 

    int func(int n) 
    { 
     int i,arr[5]; //or int *arr=(int*)malloc(5); 
     for (i=0; i<5; i++) { 
      arr[i]=n++; 
     } 
     return arr; 
    } 

Я хочу получить результат '11111', но этот код является '1606416336'.
Что делать, чтобы решить эту проблему?

+2

Вы не можете вернуть локальный массив в C. Вам нужно динамически выделять его с помощью 'malloc()'. – Barmar

+0

http://www.tutorialspoint.com/cprogramming/c_return_arrays_from_function.htm –

+0

https://www.eskimo.com/~scs/cclass/int/sx5.html –

ответ

0
#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int *func1(int); 
    int func2(int); 
    int *p = func1(1); 
    int i; 
    for(i=0; i < 5; ++i){ 
     printf("%d", p[i]); 
    } 
    printf("\n"); 
    free(p); 

    printf("%d",func2(1)); 
    return 0; 
} 

int *func1(int n){ 
    int i; 
    int *arr=(int*)malloc(5*sizeof(int)); 
    for (i=0; i<5; i++) { 
     arr[i]=n; 
    } 
    return arr; 
} 

int func2(int n){ 
    int i, v = 0; 
    for (i=0; i<5; i++){ 
     v = v * 10 + n; 
    } 
    return v; 
} 
Смежные вопросы