Search code examples
carray-initialization

Initialize the size of global array


I need to put the output of arr in global array because I need to use the array in main function. How can I initialize the array in global and I don't know the size of it ? any idea please?

globarr[]; // how to set the size here?

int *suma(int *output, int *arr)  
{  
    *output = 0;                       
    for (int i = 0; i < 100; i++) {  
        arr[i] = i;
        *output += arr[i]; 
    } 
    return arr;  
}

void prose(){
    int *by;  
    int output;
    int arr[100];                
    by = suma(&output, arr);
    for (ont i=0; i<output; i++) {
        globarr[i] = n[i];
    }  
}

void main()
{
    prose(); 
    // here I need to use the values of globarr
}

Solution

  • Use function parameters and return values not global variables

    long long suma(int **arr, size_t size)  
    {  
        long long output = 0;                       
        *arr = malloc(size * sizeof(**arr));
        if(*arr)
        {
            for (size_t i = 0; i < size; i++)  
            {  
                (*arr)[i] = i;
                output += (*arr)[i]; 
            }
        } 
        return output;  
    }
    
    #define SIZE 100
    
    void main(void)
    {
        int *array;
        long long output = suma(&array, SIZE);
    
        printf("Sum of elements = %lld\n", output);
    
        /* you can use the array */
    
        if(array)
        {
            for(size_t i = 0; i < SIZE; i++)
            {
                printf("[%3zu]=%d%s", i, array[i], ((i + 1) % 10) ? ",\t" : "\n");
            }
        }
        free(array);
    }
    

    https://godbolt.org/z/EPdxfPzoq

    Output:

    Sum of elements = 4950
    [  0]=0,    [  1]=1,    [  2]=2,    [  3]=3,    [  4]=4,    [  5]=5,    [  6]=6,    [  7]=7,    [  8]=8,    [  9]=9
    [ 10]=10,   [ 11]=11,   [ 12]=12,   [ 13]=13,   [ 14]=14,   [ 15]=15,   [ 16]=16,   [ 17]=17,   [ 18]=18,   [ 19]=19
    [ 20]=20,   [ 21]=21,   [ 22]=22,   [ 23]=23,   [ 24]=24,   [ 25]=25,   [ 26]=26,   [ 27]=27,   [ 28]=28,   [ 29]=29
    [ 30]=30,   [ 31]=31,   [ 32]=32,   [ 33]=33,   [ 34]=34,   [ 35]=35,   [ 36]=36,   [ 37]=37,   [ 38]=38,   [ 39]=39
    [ 40]=40,   [ 41]=41,   [ 42]=42,   [ 43]=43,   [ 44]=44,   [ 45]=45,   [ 46]=46,   [ 47]=47,   [ 48]=48,   [ 49]=49
    [ 50]=50,   [ 51]=51,   [ 52]=52,   [ 53]=53,   [ 54]=54,   [ 55]=55,   [ 56]=56,   [ 57]=57,   [ 58]=58,   [ 59]=59
    [ 60]=60,   [ 61]=61,   [ 62]=62,   [ 63]=63,   [ 64]=64,   [ 65]=65,   [ 66]=66,   [ 67]=67,   [ 68]=68,   [ 69]=69
    [ 70]=70,   [ 71]=71,   [ 72]=72,   [ 73]=73,   [ 74]=74,   [ 75]=75,   [ 76]=76,   [ 77]=77,   [ 78]=78,   [ 79]=79
    [ 80]=80,   [ 81]=81,   [ 82]=82,   [ 83]=83,   [ 84]=84,   [ 85]=85,   [ 86]=86,   [ 87]=87,   [ 88]=88,   [ 89]=89
    [ 90]=90,   [ 91]=91,   [ 92]=92,   [ 93]=93,   [ 94]=94,   [ 95]=95,   [ 96]=96,   [ 97]=97,   [ 98]=98,   [ 99]=99