¿C tiene referencias?

¿C tiene referencias? es decir, como en C ++:

void foo(int &i) 

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 de paso esté disponible como en C ++. Por supuesto, puede simular una referencia de paso 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 obtener más detalles sobre las diferencias entre los punteros y las referencias, consulte esta pregunta SO . (Y por favor no me preguntes, ya que no soy un progtwigdor de C o C ++ 🙂

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

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