2010-01-14 1 views
0

de Doublons possibles:
what is the difference between “int i” and “int i”?
what is the difference between const int*, const int * const, int const *Effet du placement de l'opérateur de déférence contre les espaces en C

Quelle est la différence entre

char* getInput(); 

et

char *getInput(); 
+2

dupe: http://stackoverflow.com/questions/1846930/what-is-the-difference-between-int-i-and-int-i/1846942#1846942 – jldupont

+9

Aucune. Et ce ne sont pas des pointeurs de fonction. –

+0

La différence est la préférence personnelle. –

Répondre

1

Aucun d'un point de vue syntaxique &.

+2

Aucun du point de vue syntaxique non plus. – avakar

9

En ce qui concerne le compilateur C, il n'y a pas de différence.

1

vous voulez dire char (* getInput)(); Sans les crochets, vous auriez une fonction qui renvoyait un pointeur vers un caractère. Avec les crochets, getInput est un pointeur sur la fonction qui retourne char.

2

L'emplacement de l'espace.

+0

great answer =) –

2

Aucune différence. Notez que toutes les déclarations suivantes sont les mêmes:

  • char*getInput();
  • char* getInput();
  • char *getInput();
  • char * getInput();
  • char* getInput();
  • char *getInput();
  • char * getInput();
  • char* getInput ();
  • char *getInput ();
  • char * getInput ();
  • char* getInput () ;
  • char *getInput () ;
  • char * getInput () ;

Toutes les laisser le compilateur savent qu'il ya une fonction nommée getInput qui retourne une char * et se transmet un particulier , mais non spécifié, nombre d'arguments de spécifique, mais non spécifié, types.


Modifier

Le caractère d'espace dans les fichiers source est la plupart du temps ignoré et redondant.

for (n = 0; n < 1000; n++) { /* ... */ } 
for(n=0;n<1000;n++){/*...*/} 

Il importe que les chaînes à l'intérieur et quand il est nécessaire de jetons séparés qui ne peuvent pas être séparés par d'autres moyens.

return 9; /* statement that returns from a function */ 
return9; /* statement that evaluates a variable */ 
1

Aucune différence du tout en termes de signification. En fait, aucun, même en termes de syntaxe. Tant que l'espace est quelque part, il n'y a pas de problème. Les deux compilent exactement le même code.

C'est souvent une question de préférence qui est utilisée. Les codeurs C traditionnels préfèrent généralement le second, car il est plus indicatif que le type est toujours char, indépendamment du fait qu'il s'agit d'un pointeur. Beaucoup de codeurs C++, comme Bjarne Stroustrup lui-même l'a fait remarquer, préfèrent la syntaxe char* car elle est considérée plus dans le style OOP. Personnellement, je préfère aussi celui-ci, car il signifie que la variable est un char pointeur. Editer: Impossible de trouver où il a réellement écrit cela, mais vous pouvez voir très clairement dans son guide BC++ Style and Technique FAQ qu'il préfère la syntaxe de style char*.

+0

Mais quand vous déclarez un tableau de char, vous n'écrivez pas 'char [N] a;', n'est-ce pas? Le "pointeur" d'une variable fait partie du déclarateur: heureusement que "*" peut s'écrire comme s'il faisait partie du spécificateur de type, mais il ne reflète pas exactement la syntaxe de la déclaration. –

7

Il n'y a pas de différence.

int* a; 
int *b; 
int * c; 

Il n'y a pas de différence entre a, b ou c là non plus. Ils sont tous les deux des pointeurs. C'est juste que vous pouvez mettre autant d'espaces que vous le souhaitez.

Cependant, il y a une différence entre ceux-ci:

int* a, a1, a2; 
int *b, b1, b2; 
int *c, *c1, *c2; 

seulement sur lnie C avez-vous déclaré 3 pointeurs à ints. A et B ont tous deux un poitner-à-int et deux ints.

1

Pour le compilateur, il n'y a aucune différence.

Pour mon cerveau, la première forme est préférée car elle montre que la fonction renvoie plus clairement un pointeur vers char (et non un char). Bien sûr, c'est strictement à mon humble avis.

0

Je sais que je suis ce que réponds ont tous dit ... Je veux juste ajouter quelques choses:

ce que tu voulais peut-être demander peut-être: char * getInput(); char (* getInput)(); Ici, le premier représente: getInput est une fonction qui renvoie un pointeur vers un caractère. La seconde est: getInput est un pointeur vers une fonction qui retourne un caractère.

En cas de déclarations compliquées, rappelez-vous toujours !!! COMMENCER À LIRE À L'INTÉRIEUR DES SUPPORTS

Considérez ceci: char * (* getInput)(); Ici, getInput est un pointeur vers une fonction qui renvoie un pointeur vers un caractère.

Questions connexes