Bien, así que estoy llamando a la función fill_arrays como este:

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

fill_arrays se parece a esto:

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);
}

En input_data función que desea asignar algunos números de una matriz:

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

El problema es que estoy totalmente perdido con los punteros… tal vez usted me puede decir cómo debo llamar a la función input_data con el fin de ser capaz de asignar números a los datos de la matriz?

  • ¿Cuál es el objetivo general? ¿Qué es el programa supone que debe hacer?
  • ¿Qué es get_size?
  • usted necesita para reemplazar sizeof(int * ) por sizeof(int) y pasar data1 a input_data en lugar de la referencia &data.
  • Qué libro estás leyendo?
  • Es el objetivo de la función fill_arrays() para (a) determinar los tamaños de las matrices que se llena, (b) asignar espacio para matrices de tamaño, (c) llenar las matrices asignadas, y (d) retorno como fuera de los parámetros de las matrices y el efecto de los tamaños de cada uno de ellos? Que es lo que el prototipo de fill_arrays() parece que quieren o esperan. Es que el caso?
InformationsquelleAutor | 2013-04-16

3 Comentarios

  1. 2

    Suponiendo que input_data debe establecer todos los valores de matriz a un valor conocido, podría escribir

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

    de llamar a este como

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

    El punto clave aquí es que usted puede utilizar (*data1)[index] para acceder a un determinado elemento de la matriz y puede pasar que las matrices como int* argumentos.

  2. 4

    Me topé con esta pregunta, mientras que haciendo una tarea y la respuesta no me parecen del todo satisfactorio, por lo que voy a tratar de mejorarlo.

    Aquí es un pequeño programa que establecerá una matriz de un tamaño definido por el usuario, llenarlo de manera arbitraria, y a imprimir.

    #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;
    }

    Espero que esto ayude a alguien que está aprendiendo C para la primera vez, o volver a ella después de años de distancia desde el probado y verdadero lenguaje, como yo.

Dejar respuesta

Please enter your comment!
Please enter your name here