使用函数在C中填充数组

时间:2013-04-16 15:35:43

标签: c arrays function pointers

好的,所以我这样调用函数fill_arrays:

fill_arrays(&data1, &data2, &size1, &size2);

fill_arrays看起来像这样:

void fill_arrays(int **data1, int **data2, int *size1, int *size2){
   *size1 = get_size(*size1, 1);
   *size2 = get_size(*size2, 2);
   *data1 = malloc(*size1 * sizeof(int *));
   *data2 = malloc(*size2 * sizeof(int *));
   input_data(&data1, *size1, 1);
}

在input_data函数中,我想为数组指定一些数字:

void input_data(int **data, int size, int index){
   *data[5] = 5;
}

问题是,我完全迷失了指针......也许你可以告诉我如何调用函数input_data以便能够为数据数组分配一些数字?

3 个答案:

答案 0 :(得分:4)

我在完成家庭作业时偶然发现了这个问题并且答案并没有让我完全满意,所以我会尝试改进它。

这是一个小程序,它将建立一个用户定义大小的数组,任意填充并打印它。

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

void fill_array(int *array, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        // fill array like [1, 2, 3, 4...]
        array[i] = i+1;
    }
}

void print_array(int *array, int n)
{
    int i;
    printf("[");
    for (i = 0; i < n; i++)
    {
        if (i == (n-1))
            printf("%d]\n", array[i]);
        else
            printf("%d, ", array[i]);
    }
}

int main()
{
    int n;
    printf("Please enter a size for your array>");
    scanf("%d", &n);

    // dynamically allocate memory for integer array of size n
    array = (int*) malloc (n * (sizeof(int)));

    fill_array(array, n);
    print_array(array, n);

    return 0;
}

我希望这可以帮助那些第一次学习C语言的人,或者像我一样,在经过多年努力学习的语言之后回归它。

答案 1 :(得分:2)

假设input_data应将所有数组值设置为已知值,您可以编写

void input_data(int *data, int size, int value){
    for (int i=0; i<size; i++) {
        data[i] = value;
    }
}

称之为

input_data(*data1, *size1, 5); // set all elements of data1 to 5

这里的关键点是你可以使用(*data1)[index]来访问特定的数组元素,并可以将数组作为int*参数传递。

答案 2 :(得分:0)

您似乎还应该添加int *array = NULL以使其正常运行。