Buenas noches,
me preguntaba por qué mi el compilador gcc me suelta un warning en el siguiente código, que aparentemente funciona.
código:
#include <stdio.h>
/usamos dobles punteros porque queremos cambiar los punteros, no los valores./
intercambioVec(int *vec1[], int *vec2[], int dim)
{
int i; int *aux;
for (i=0; i<dim; i++)
{
aux=vec1;
vec1=vec2;
vec2=aux;
}
}
imprimirVector(int vec[], int dim)
{
int i;
for (i=0; i<dim; i++)
{
printf("%d ", vec);
}
printf("\n");
}
int main()
{
int vec1[2], vec2[2];
vec1[0]=1;
vec1[1]=2;
vec2[0]=3;
vec2[1]=4;
intercambioVec(&vec1,&vec2,2); //warning aqui
imprimirVector(vec1, 2);
imprimirVector(vec2, 2);
return 0;
}
Lo que pretendo en este programilla es hacer una función que intercambie los elementos de dos vectores simplemente camabiando sus punteros, por lo tanto, para modificar un puntero en la función, paso un puntero al puntero en cuestión.
No estoy del todo seguro de que lo este haciendo correctamente.
El warnings:
prueba.c:30: aviso: se pasa el argumento 1 de 'intercambiarVec' desde un puntero incompatible.
prueba.c:30: aviso: se pasa el argumento 2 de 'intercambiarVec' desde un puntero incompatible.
Salida:
3 4
1 2
Por lo que aparentemente ha funcionado, sin embargo el compilador se queja y da el warning!
Agradezco cualquier ayuda.
P.D.Tengo puesta la opción -pedantic para que me avise de todo, incluso las chorradas.