es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué significa inicializador inválido?

Teniendo este código:

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

#define SIZE 5

int main()
{
//int (*ar)[10] = malloc(sizeof *ar * SIZE);
int *ar[10] = malloc(sizeof *ar * SIZE);
printf(“%ld\n”, sizeof *ar);
}

Obtuve:

a.c:8:19: error: inicializador inválido
8 | int *ar[10] = malloc(sizeof *ar * SIZE);
|

¿Por qué esta inicialización de puntero usa un “inicializador inválido”? ¿Qué es inválido aquí?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La inicialización del puntero utilizando int *ar[10] = malloc(sizeof *ar * SIZE) utiliza un inicializador inválido porque cuando declaramos un arreglo de punteros, necesitamos usar corchetes en lugar de paréntesis. La sintaxis correcta para asignar memoria a un arreglo de punteros es:

    int **ar = malloc(sizeof(int*) * SIZE);
    

    Esto asignará memoria para un arreglo de punteros a enteros de tamaño SIZE, cada uno de los cuales puede ser inicializado para hacer referencia a arreglos de enteros de cualquier tamaño utilizando la asignación dinámica de memoria.

Comments are closed.