C/Visual C - Llamada a funciones

 
Vista:

Llamada a funciones

Publicado por Jose (3 intervenciones) el 01/05/2001 09:27:08
Hola gente!

Soy un novato intentando aclararse en esto del C... El siguiente código es un ejemplo chorra que he hecho para practicar llamadas a funciones... y no hace lo que quiero!

#include <stdio.h>

void funcion (int *c, int a);
void main (void)
{
int i;
int a[4]={0,1,2,3};
int c[4]={0,0,0,0};
clrscr();

for (i=0;i<4;i++) printf("\nc[%d]=%d",i,c[i]);
getch();

funcion(&c,a[0]);

gotoxy(1,6);
for (i=0;i<4;i++) printf("\nc[%d]=%d",i,c[i]);

getch();
}

void funcion (int *c, int a)
{
*c=a;
}

Lo único que deseo es que la variable c tome el valor de la variable a!!! El problema está en esto de los punteros al pasar los parámetros por referencia, no?

Por favor, un buen samaritano que me ayude un poco!

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llamada a funciones

Publicado por cris (11 intervenciones) el 01/05/2001 10:41:22
Bueno, antes que nada dejame decirte que en c los arreglos (sean de lo que sean) se pasan por referencia (aunque tu no lo quieras), pero de todas maneras te dire como mandar por referencia un puntero, *(&).
suponiendo que tengas un struct nodo y lo quieres manejar con un puntero haces esto:

struct nodo{
int x;
char y;
};

void cambianodo(nodo *(&n)){
//...
//lo que sea
//...
}

void main(){
nodo *l;
cambianodo(l);
}

Bueno, ahora regresando al tema, no se si quieras que c sea igual a a o solamente la primera posicion, es decir:
int a[4]={1,2,3,4};
int c[4]={0,0,0,0};

que despues de la funcion sea:
c={1,0,0,0}

o :
c={1,2,3,4}

bueno, la solucion para el primer caso es este:

void funcion(int *c,int a){
*c=a;
}

void main(){
int a[4]={1,2,3,4};
int c[4]={0,0,0,0};
funcion(c,a[0]);
}

//esto te imprimira c=1,0,0,0

ahora, si quieres que c==a, entonces hazlo asi:

void funcion(int *c,int *a){
for(int i=0;i<4;i++)
c[i]=a[i];
}

void main(){
int a[4]={1,2,3,4};
int c[4]={0,0,0,0};
funcion(c,a);
}

//esto hace que c=1,2,3,4 y a=1,2,3,4

Espero haberte ayudado.
Saludos
Cristina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar