Tengo el siguiente programa. Sin embargo, no puedo entender por qué tengo que pasar la dirección de la matriz. Cuando ambos están apuntando a la misma dirección. Cuál es la dirección del primer elemento de la matriz de int.¿Por qué no puedo asignar una matriz al puntero directamente en C?
recibo una advertencia cuando intento hacer esto "asignación de tipo de puntero incompatible":
ptr = var;
código fuente completo:
void print_values(int (*ptr)[5])
{
size_t i = 0;
for(i = 0; i < 5; i++) {
printf("%d: [ %d ]\n", i, (*ptr)[i]);
}
}
int main(void)
{
/* declare a pointer to an array integers */
int (*ptr)[5] = NULL;
/* array of integers */
int var[] = {1, 2, 3, 4, 5};
/* assign the address of where the array is pointing to (first element) */
ptr = &var;
/* Both are pointing to the exact same address */
printf("var [ %p ]\n",(void*)var);
printf("&var [ %p ]\n", (void*)&var);
print_values(ptr);
return 0;
}
puedo compilar el código con gcc 4.4.4 c89 -Wall -Wextra -O0
Traté de volver a escribir su título, ya que no tenía sentido. Por favor, verifique si seleccioné la esencia de su problema correctamente. –
Creo que su título suena mejor que el mío. Gracias. – ant2009
El fragmento de código compila bien. ¿Quiere decir que obtendría un error si agrega 'ptr = var' a main? –