Son bestias bastante diferentes. Para explicar mejor, permítanme definir ambos.
Punteros:
Una variable contiene alguna pieza de datos. Un puntero es un tipo de datos que se refiere a otra pieza de memoria. Piense en ello como un letrero que dice "Por allí ---->" apuntando a un objeto de algún tipo. Por ejemplo, las cadenas en C son solo un puntero a un carácter, y por convención, usted sabe que hay más caracteres que lo siguen hasta un carácter \0
. C utiliza punteros ampliamente, ya que no hay otro mecanismo para el intercambio de información común entre las partes del programa, excepto por ....
variables globales:
en un programa, que tiene variables en cada función. Estos pueden ser los parámetros de la función, y los definidos dentro. Además, tiene lo que se conoce como variables globales. Estas variables almacenan información a la que pueden acceder todas las funciones de un archivo. Esto puede ser útil para pasar cosas como un estado global alrededor o configuración. Por ejemplo, puede tener uno llamado debug
que su código comprueba antes de imprimir algunos mensajes, o para almacenar un objeto de estado global, como la puntuación en un videojuego.
Lo que creo que le confunde: Ambos se pueden utilizar para compartir información entre partes del código. Como los argumentos de función se pasan por el valor en C, una función no puede modificar las variables de lo que lo llama. Hay dos maneras de "arreglar" ese problema. La primera (y correcta) forma es pasar un puntero a la variable en la función. De esta forma, la función sabe dónde modificar la variable principal. Otro enfoque es simplemente usar una variable global. De esta forma, en lugar de pasar punteros, simplemente editan las variables globales directamente.
Así que puede usar ambos para lograr lo mismo, pero la forma en que funcionan es bastante separada. De hecho, una variable global puede ser un puntero.
creo que esta es la primera vez que he visto la frase "El libro C", en referencia a una obra que no sea K & R. –
ambos son completamente diferentes. –
Sí, lo noté después de mirar el enlace antes de comentar. –