2010-07-27 4 views
3

Oh les joies d'être un noob de gestion de la mémoire!En objectif-C, quelle est la différence entre Type * var et Type * var?

Je me mets un peu par un code Objective-C, même si je comprends les bases des pointeurs, j'ai vu ces deux constructions différentes, sans pouvoir vraiment comprendre leur différence.

Quelqu'un peut-il m'éclairer?

J'ai édité ma question, les constructions ne se sont pas comportées différemment, à la place je me suis fait encore énoncer par les déclarations multiples gotcha. Merci!

+0

double possible de [pointeurs Déclarant; astérisque à gauche ou à droite de l'espace entre le type et le nom?] (http://stackoverflow.com/questions/2660633/declaring-pointers-asterisk-on-the-left-or-right-of-the-space -entre le-type-a – kennytm

Répondre

5

Il n'y a pas de différence, c'est une question de goût. Cependant, sachez que le pointeur se lie toujours au nom, pas au type. Donc ceci:

Type* var1, var2; 

Déclare var1 comme un pointeur vers Type, alors que var2 est pas un pointeur. C'est juste une raison de plus de ne pas déclarer plusieurs variables dans la même déclaration.

Historiquement, la notation Type *var est plus courant en C, où il est lu en tant que « var est déclarée comme un pointeur vers Type », à savoir « le type de *var est Type ». En C++, d'autre part, Type* var est plus commun et est lu comme "var est déclaré comme étant de type 'pointeur vers Type'".

0

Etes-vous sûr que cela agit différemment? Cela me semble un peu étrange. Même si je ne sais pas Objective-c, en C il n'y aurait pas de différence entre

Type* var 
Type * var 
Type *var 

Il est juste une question de syntaxe/préférence.

Sauf si vous ne parlez pas de déclarant une variable, mais l'accès il?

2

Il n'y a pas de différence du tout.

Mais considérez la ligne suivante:

Type* var1, var2; 

Ici seulement var1 est un pointeur sur le type, mais il est plus facile de voir que si vous écrivez

Type *var1, var2; 
Questions connexes