¿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í?
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: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.