Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sarcofagobra

Ponteiros

Recommended Posts

Pq esse código ta errado?

#include <stdio.h>

#include<stdlib.h>
#include <math.h>
float elevanum (float a,float b, float (*func)(float x, float y));
main (void)
{

float (*p)(float x, float y); 
float potencia;
float a=2;
float b=4;

p=pow;

potencia=elevanum (a,b, p); 

printf("%0.2f", potencia);

getch();
return 0;
}

float elevanum (float a,float b, float(*func)(float x, float y))
{

(*func)(a,B); 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>

#include<stdlib.h>
#include <math.h>

float elevanum(float (*p)(),const float a,const float B)
{
   return p(a,B);
}

int main (void)
{

   float (*p)();
   float potencia;
   float a=2;
   float b=4;

   p=pow;

   potencia=elevanum(p,a,B);

   printf("%.2f", potencia);

   getch();
   return 0;
}

 

Bom a começar que voce usou B maiusculo na função ao inves de minusculo, para fazer ponteiro para funcao voce nao especifica o que ela vai receber, use somente float (*p)(), para enviar voce manda somente p e recebe tipo (*p)().

E voce tambem nao mandou retornar nada na sua função.

 

 

EDIT: O B maiusculo é bug do forum, desculpe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Especifique o tipo de retorno da main. O tipo portável é int.

2. Especifique o retorno da elevanum. Não fazer isto causa undefined behavior.

3. Apesar de não haver nada de errado em especificar os tipos dos parâmetros da função para qual seu ponteiro aponta, seu ponteiro deveria receber como valor o endereço de uma função recebendo dois floats e retornando um float. pow é bem diferente disto. Sugiro também que não polua a declaração do ponteiro com nomes de parâmetros. O seguinte seria suficiente e equivalente:

 

float (*p)(float, float);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.