en C

2010-01-13 4 views
1

Possible en double:
Passing pointer argument by reference under C?en C

sont des variables de référence d'un concept C++? Sont-ils disponibles en C? Si disponible en C, pourquoi mon code donne-t-il une erreur de compilation?

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int a = 10; 
    int b = 20; 
    int &c = a; 
    int &d = b; 
    return 0; 
} 

Sortie:

bash-3.2$ gcc test.c 
test.c: In function `main': 
test.c:12: error: parse error before '&' token 

Pourquoi?

+1

Vous pouvez mettre en forme du code en plaçant quatre espaces devant chaque ligne. (Je l'ai fait pour vous ici.) –

+1

Voici la réponse: http://stackoverflow.com/questions/1825794/passing-pointer-argument-by-reference-under-c/1825813#1825813 –

Répondre

4

Le passage par référence n'est pas disponible en C, utilisez plutôt des pointeurs simples.

2

Les références sont un concept C++ uniquement. En C vous êtes limité à utiliser uniquement des pointeurs.

6
  1. Il est un concept disponible sur C++ (mais pas exclusivement)
  2. Non, ce n'est pas disponible dans la norme C
  3. Voir 1 et 2. Voir * 1 et * 2.
+3

Should point 3 être "Voir * 1 et * 2"? ;) – Lazarus

6

Vous ne pouvez pas l'utiliser pour déclarer des variables:

int &c = a; 

L'opérateur & est utilisé pour obtenir l'adresse mémoire d'une variable. Ainsi, vous pouvez écrire par exemple:

int a = 10; 
int *c; 
c = &a; 
+0

true en C, mais C++ le permet. – kenny

11

C n'a pas de références en tant que type. Le '&' dans C est utilisé pour obtenir l'adresse d'une variable seulement. Il ne peut pas être utilisé comme vous essayez de l'utiliser dans C.

2

Cela fait longtemps que vous essayez d'assigner l'adresse de c à la valeur de a.

Correction: valeur de a à l'adresse de c. (Merci à Chinmay Kanchi de l'avoir signalé.)

+0

Non, il essaie d'attribuer la valeur de a à l'adresse de c. De toute façon, c'est carrément illégal. –

1

Non, la référence est uniquement C++.