在函数中创建动态数组(calloc),并在main中使用它

在函数中创建动态数组(calloc),并在main中使用它,c,arrays,function,pointers,dynamic,C,Arrays,Function,Pointers,Dynamic,很抱歉提出一个新问题,但我在论坛或谷歌周围找不到这样的问题 无论如何,我的问题是: 在Main中,我声明了一个数组“insieme_A”和一个包含数组长度“nums_element_A”的变量 然后,打印阵列: int counter; printf("\nL'array è costituito dai seguenti elementi: \n"); for (counter = 0; counter < nums_element_A; ++counter) pri

很抱歉提出一个新问题,但我在论坛或谷歌周围找不到这样的问题

无论如何,我的问题是: 在Main中,我声明了一个数组“insieme_A”和一个包含数组长度“nums_element_A”的变量

然后,打印阵列:

 int counter;
 printf("\nL'array è costituito dai seguenti elementi: \n");
 for (counter = 0; counter < nums_element_A; ++counter)
       printf("%lf \n", insieme_A[counter]);` 

这是因为在代码中,
get\u array
函数的参数是按值传递的

要更正它,请将其用作
int get\u数组(双**数组)
,并相应地更改代码。以下是代码片段:


您正在向get函数发送数组val的副本-因此您并没有真正修改它在main中指向外侧的位置-您应该尝试发送get_数组(double*array[])哇,非常感谢!你解释得很容易,也可以理解。再次感谢,终于成功了!
 int counter;
 printf("\nL'array è costituito dai seguenti elementi: \n");
 for (counter = 0; counter < nums_element_A; ++counter)
       printf("%lf \n", insieme_A[counter]);` 
int get_array(double array[])
{
    double element;
    int nums_elements,
    counter;

     do
     {
         printf("Quanti elementi deve contenere l'insieme? ");
         scanf("%d", &nums_elements);
     }
     while (nums_elements <= 0);

     array = (double *)calloc(nums_elements, sizeof (double));

     for (counter = 0;
          counter < nums_elements;
          ++counter)
     {
         printf("Inserire valore %d-->", counter+1);
         scanf("%lf",
                 &element);
         array[counter] =  element;
     }

     for(counter=0;counter<nums_elements;++counter){
        printf("%lf",array[counter]);
     }

     return (nums_elements);
}
int get_array(double **array)
{
    int nums_elements, counter;

    do
    {
        printf("Quanti elementi deve contenere l'insieme? ");
        scanf("%d", &nums_elements);
    } while (nums_elements <= 0);

    *array = (double *)calloc(nums_elements, sizeof (double));

    for (counter = 0; counter < nums_elements; ++counter)
    {
            printf("Inserire valore %d-->", counter+1);
            scanf("%lf", &((*array)[counter]));
    }
    return (nums_elements);
}
int count;
double *insieme_A;
count = get_array(&insieme_A);