9
votes

Quelle est la différence entre INT * PTR et INT * PTR en C?

Je suis assez nouveau chez C et je ne connais pas la différence entre les deux déclarations variables suivantes: xxx

Je pense que dans la déclaration int * pTR; , ptr S ne peut pas être modifié, tandis que cela peut être modifié pour la déclaration, int * ptr;

Je ne sais pas si ça Est-ce cependant.

Quel est le concept derrière les deux déclarations?


5 Réponses :


26
votes

au compilateur, il n'y a pas de différence entre les deux déclarations.

au lecteur humain, le premier peut impliquer que le type "INT *" s'applique à toutes les déclarations de la même déclaration. Cependant, le * ne lie que l'identifiant suivant. p>

Par exemple, les deux états suivants ne déclarent qu'un seul pointeur. p> xxx pré>

Cette instruction déclare plusieurs pointeurs, ce qui empêche l'utilisation de l'espacement "INT *" . P>

int *ptr1, *ptr2, *ptr3;


0 commentaires

4
votes

Les espaces en C sont surtout insignifiants. Il y a des cas occasionnels où les espaces sont importants, mais ceux-ci sont rares entre eux. Les deux exemples que vous avez postés sont équivalents.


0 commentaires

2
votes

Comme les autres ont dit. Il n'y a pas de différence. Si vous souhaitez comprendre la déclaration de type C plus complexe, vous pouvez trouver ce lien utile. lecture de déclarations C .


0 commentaires

1
votes

C'est ce qu'on appelle la surcharge de l'opérateur WhitSpace, voir ici: http: //www2.research. Att.com/~bs/whitSpace98.pdf


1 commentaires

Je sais que cela a été posté il y a un an, mais ce lien est vraiment génial! Merci



1
votes

int * p;
xxx



Il n'y a pas de sens pour le compilateur, (int *) est un type de pointeur nommé .


0 commentaires