[ Foro de C ]

Ayuda con error de constante C

18-Dec-2020 02:52
Invitado (Renata Saez)
2 Respuestas

Hola a todos, el problema dice:  
int alfa = 10;
int beta = 20;
int* p1 = &alfa;
int* p2 = β
int* arr[2] = {p1,p2};

Escriba la declaración de una función func() que acepte como argumento en el llamado a la función el nombre del arreglo, esto es arr. Asuma el retorno de func como int.

Al momento de crear el programa;

#include <stdio.h>

int func(void);
int alfa=10;
       int beta=20;
       int* p1=&alfa;
       int* p2=&beta;
       int* arr[2]={p1,p2};
       

int main()
{
   int=&arr[2];
       
   return 0;    
}

Me arroja "error: initializer element is not constant.", refiriéndose a p1 y p2. Uso compilador online.

Gracias!!!! :)





18-Dec-2020 12:26
Nacho Cabanes (+84)

El mensaje es claro. Decláralos ahí pero dales valor dentro de "main", porque el valor que les quieres dar no es una constante.


19-Dec-2020 23:17
Invitado (carlos)

hola alberto

respecto al error, como bien dice cabanes quieres inicializar
el array con variables, si pones la dirección de alfa y beta
en la inicialización de arr no te dará problemas ya que si
son constantes

lo que pretende el problema es que te des cuenta que arr no
es un array "normal" si no un array de punteros, es decir
que el contenido del array no es un valor int si no una
dirección de memoria que apunta a un int, así que piensa como
hacer la declaración de la función ;-)

lo que no entiendo es para que necesitas variables globales
cuando pueden ser locales, las globales son una fuente de
problemas y hay que evitarlas en lo posible

ah el "int=&arr[2];" no tiene sentido lo mires como lo mires

... a repasar arrays y punteros

suerte






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)