2017-07-30 6 views
0

Je comprends des questions précédentes que les espaces est hors de propos dans les déclarations de pointeur en Objective-C, par exemple:Whitespace et entre parenthèses dans les déclarations de pointeur en Objective-C

float* powerPtr; 

float * powerPtr; 

float *powerPtr; 

ne signifient exactement la même chose (en dehors des considérations stylistiques. ..) mais est

(float *)powerPtr; 

(avec des parenthèses) le même aussi? Ces parenthèses ne signifient-elles pas implicitement que l'astérisque devrait être lié d'une manière ou d'une autre à float, alors qu'il devrait plutôt être logiquement lié à powerPtr? (Le pointeur réelle est en fait powerPtr, ne flotte pas, si je ne me trompe pas)

Répondre

0

Votre code:

(float *)powerPtr; 

n'est pas une valide déclaration en (Objective) C.

Ceci est une expression qui jette la valeur dans la variable powerPtr être de type float *. Le résultat de cette distribution est simplement ignoré car il n'est pas utilisé, votre compilateur peut donner un avertissement - Xcode 8 émet un "résultat d'expression non utilisé".

Addendum

De votre commentaire la syntaxe vous montrer était censé faire partie d'une déclaration de méthode, par exemple quelque chose comme:

- (void)doSomething:(float *)powerPtr; 

qui se produirait dans un @interface. Les parenthèses ici ne sont pas utilisées pour le regroupement en soi mais pour délimiter le type. En ce qui vous concerne:

Ne pas ces parenthèses implicitement « signifie » que l'astérisque devrait être d'une certaine manière liée à float, quand il doit être plutôt plus logiquement liée à powerPtr?

Le *est partie du type, float * est la spécification de type pour "pointeur flotter". L'identifiant powerPtr est associé à la spécification de type entier.

HTH

+0

N'est-il pas utilisé dans les définitions de méthodes? –

+0

- (BOOL) isEqualToString: (NSString *) autre; –

+0

Voir addenda, HTH – CRD