2010-11-01 5 views
-2
SPI_SPI (char* p1, char* p2) 
{ 
    return (*(point*)p1 == *(point*)p2) ? '0' : 'F'; // epsilon 
} 

est ce spectacle que p1 caste pour pointer le pointeur de classe et de donner un pointeur vers cette classe de point de pointeur .. suis-je raison? Je ne reçois pas de pointeur dans tous les cas, s'il vous plaît référez-moi un lien utile à ce sujet ... ou expliquez-moi ceci.besoin d'aide dans les pointeurs

+0

Que voulez-vous faire? –

+0

je veux savoir sur les pointeurs .. je ne reçois pas cette fonction .. comme je le sais, son p1 de conversion en pointeur de point de référence et que giev un pointeur vers lui .. suis-je raison? – piyapiya

Répondre

1

Cette fonction compare deux points à l'aide de comparaison spécifiée pour objet point par coulée structures de point référencé par char* pointeurs.

ce code est égal à:

// casting char* to point* 
point* ptPointer1 = (point*)p1; 
point* ptPointer2 = (point*)p2; 

// extracting values 
point pt1 = *ptPointer1; 
point pt2 = *ptPointer2; 

// comparing by value 
return pt1 == pt2 ? '0' : 'F'; 
0

Vous comparez la valeur pointée par p1 (cast vers une classe de points) à la valeur pointée par p2 (également convertie en classe de points). Si elles sont égales, vous retournez '0' sinon vous retournez 'F'. Votre fonction n'a pas de valeur de retour, sauf si elle est incluse dans SPI_SPI, ce qui en ferait une macro. Ce type d'utilisation de la macro est fortement non recommandé (par moi au moins). En outre, il est généralement préférable de capitaliser les classes (Point).

+0

ce que cela veut dire? * (Point *) p1 – piyapiya

+0

p1 est en char et je ma casting p1 à la classe de points et de gagner je reçois pointeur de p1 .. – piyapiya

+0

Je pense que SPI_SPI dans son cas doit être une macro qui définit un Char ? Cela devrait en faire une fonction de retour valide, n'est-ce pas? –

1

Code d'origine:

SPI_SPI (char* p1, char* p2) 
{ 
    return (*(point*)p1 == *(point*)p2) ? '0' : 'F'; // epsilon 
} 

En tant que fonction ordinaire cette définition n'a pas de type de résultat, et code invalide. En tant que constructeur, il tente de renvoyer une valeur et est un code non valide. Donc de toute façon c'est un code invalide.

En ce qui concerne votre question, je ne parviens pas à l'analyser: il semble être un non-sens.

Vive & HTH.,

+0

Si je devais deviner, je dirais SPI_SPI est une macro qui évalue au début d'une définition de fonction valide. – Splat

Questions connexes