Hola
En C no se pueden pasar parámetros por referencia como en C++ utilizando &, para hacerlo hay que pasar un puntero y modificar el valor al que apunta, pongo un ejemplo con este ejercicio
Saludos
Cita de: Valkyr en 16 Agosto 2011, 19:02 PM
en C que yo sepa si se pueden pasar los parámetros por referencia
En C no se pueden pasar parámetros por referencia como en C++ utilizando &, para hacerlo hay que pasar un puntero y modificar el valor al que apunta, pongo un ejemplo con este ejercicio
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida
* Devuelve 1 si existe el producto, 0 en caso contrario
*/
int listado(char palabra[], float, int, float*, float*);
int main()
{
int cant;
float precio, *desc, *subtotal;
char palabra[6];
desc = (float*)malloc(sizeof(float));
subtotal = (float*)malloc(sizeof(float));
printf("Ingrese nombre del producto:");
fgets(palabra, 6, stdin);
printf("Ingrese precio unitario:");
scanf("%f", &precio);
printf("Ingrese cantidad necesitada:");
scanf("%d", &cant);
if(listado(palabra, precio, cant, desc, subtotal) == 1)
printf("| Producto: %s \t\n| Cantidad: %d \t\n| P.unitario: %0.2f \t\n| Descuento: %0.2f \t\n| Subtotal: %0.2f \t\n", palabra, cant, precio, *desc, *subtotal);
else
printf("ERROR");
free(desc);
free(subtotal);
return 0;
}
/*
* Función que calcula el descuento y el subtotal de un producto a partir de su precio unitario y la cantidad introducida
* Devuelve 1 si existe el producto, 0 en caso contrario
*/
int listado(char pala[6], float precio, int cant, float *desc, float *subtotal)
{
if((strcmp(pala, "prod1")==0) || (strcmp(pala, "prod2")==0))
{
*desc = (precio*cant*10)/100;
*subtotal = ((precio*cant)-(*desc));
return 1;
}
else
if(strcmp(pala, "prod3")==0)
{
*desc = 0;
*subtotal = precio*cant;
return 1;
}
else
return 0;
}
Saludos