Dev - C++ - Duda declaración de apuntadores

   
Vista:

Duda declaración de apuntadores

Publicado por Luis (2 intervenciones) el 29/03/2016 01:17:13
Buenas tardes,
Quiero ver si me pueden ayudar con una duda sobre una declaración de un apuntador dentro de una estructura.
La declaración es la siguiente:

1
2
3
4
struct Vector {
  double x,y;
  double (*pmag)(struct Vector *);
};

La duda es sobre la segunda declaración double y que significa el asterisco después de Vector.

El motivo de esta declaración es para calcular la magnitud de un vector guardando cada una de sus componentes en las variables x e y. se tiene que crear una función mandándola llamar por medio del apuntador *pmag.

Saludos
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

Duda declaración de apuntadores

Publicado por Martín (65 intervenciones) el 29/03/2016 02:04:21
1
double (*pmag)(struct Vector *)
declara un puntero a función que devuelve double y que toma como argumento un puntero de tipo struct Vector.

Acá pongo un ejemplo donde ese puntero a función puede estar apuntando a una función que sabe multiplicar o a una función que sabe sumar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 
struct Vector {
    double x, y;
    double (*pmag)(struct Vector*);
};
 
double prod(Vector* pv)
{
    double producto = pv->x * pv->y;
    std::cout << "x * y = " << producto << std::endl;
    return producto;
}
 
double sum(Vector* pv)
{
    double suma = pv->x + pv->y;
    std::cout << "x + y = " << suma << std::endl;
    return suma;
}
 
int main()
{
    Vector v;
    v.x = 1;
    v.y = 2;
 
    v.pmag = prod;
    v.pmag(&v);
 
    v.pmag = sum;
    v.pmag(&v);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda declaración de apuntadores

Publicado por Luis (2 intervenciones) el 29/03/2016 18:11:36
Excelente!! muchas gracias me sirvió mucho
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