Hola, gente.
Les dejo un ejemplo de lo que digo en el enunciado y la pregunta es ¿hay alguna diferencia en hacerlo de una manera u otra?, los consulto porque me parece que en ningún Ej. vi como lo hago en la segunda llamada a la función. -
#include <stdio.h>
void vector_(int *vt );
int main(void) {
int vector[] = {1, 2, 3, 4, 5}, *vt = vector;
vector_(vt);
printf( "\n" );
vector_(vector);
return 0;
}
void vector_(int *vt ){
size_t i;
for( i=0; i<5; i++){
printf("\n %d", *(vt+i));
}
}
Saludos.
Cita de: NOB2014 en 9 Junio 2016, 03:02 AM
¿hay alguna diferencia en hacerlo de una manera u otra?
Ambos son equivalentes el primer caso es redundante no es necesario pasar un puntero a un array esto se hace por defecto el array siempre decae a puntero al primer elemento cuando lo pasas como parámetro a una función.
Un saludo.
Hola, geeke.
Muchas gracias por ocuparte, las dudas que me quedan ahora son las siguientes:
Si recibo en a la función el arreglo de esta manera
void vector_(int vector[] );
¿En la función se crearía una copia de todo el arreglo?
Y la otra es, si tendrían un arreglo con 1000 elementos, ¿de qué manera llamarían a la función y como lo recibirían?.-
Saludos.
Cita de: NOB2014 en 9 Junio 2016, 16:03 PM
¿En la función se crearía una copia de todo el arreglo?
No el array no es copiado en su totalidad solo una copia del puntero a su dirección.
Cita de: NOB2014 en 9 Junio 2016, 16:03 PM
¿de qué manera llamarían a la función y como lo recibirían?.-
int f(int array[1000])
Es lo mismo que
int f(int array[])
int f(int *array)
No importa la sintaxis siempre se pasa un puntero