2010-11-29 7 views

Respuesta

12

Conceptualmente, C tiene referencias, ya que los punteros hacen referencia a otros objetos.

Sintácticamente, C no tiene referencias como hace C++.

+2

gracias, aplausos :) –

+2

Incorrecto, conceptualmente los punteros y las referencias son absolutamente diferentes. Puntero es un tipo de datos algebraico de nulo y una referencia. La referencia es solo eso, referencia. La implicación es seguridad de tipo: se puede ver inmediatamente si una función alguna vez significó obtener un argumento nulo o no. –

+0

@ Hi-Angel _Conceptualmente_, un puntero hace referencia a un objeto. – sbi

27

No, no es así. Tiene punteros, pero no son exactamente lo mismo.

En particular, todos los argumentos en C se pasan por valor, en lugar de que la referencia por paso esté disponible como en C++. Por supuesto, puede ordenar de simular pase por referencia a través de punteros:

void foo(int *x) 
{ 
    *x = 10; 
} 

... 

int y = 0; 
foo(&y); // Pass the pointer by value 
// The value of y is now 10 

Para más detalles sobre las diferencias entre los punteros y referencias, véase this SO question. (Y por favor no me pregunte, ya que no soy un programador de C o C++ :)

+5

Jon en una pregunta 'C': ¡bienvenido de regreso desde el lado oscuro! –

+0

@Martin: No será por mucho tiempo;) –

+1

@Martin, tenía exactamente el mismo pensamiento – JaredPar