¿Cuál es la diferencia entre punteros y variables de puntero?
Pon un ejemplo.
int a=3;
int *p;
p=amp;
Ahora veámoslo. Primero explica la ecuación a=3
El lado derecho de la ecuación es la constante y el lado izquierdo es la variable.
De manera similar
p=amp;a, el lado izquierdo es la variable de puntero y el lado derecho es el puntero.
El concepto básico de punteros: en Para distinguir diferentes ubicaciones en la memoria, la memoria se divide en bytes y a todos los bytes de la memoria se les asigna a su vez un número, llamado dirección. Una variable en el programa ocupará una cierta cantidad de bytes de memoria y la información de datos almacenada en estos bytes se denomina contenido de la variable.
Cuando una variable ocupa varios bytes de memoria consecutivos, se utilizará la dirección del byte superior como dirección de la variable. Un puntero es una dirección de memoria, una dirección de variable o una dirección de entrada de función. Las direcciones variables juegan un papel muy importante en la ejecución del programa. Cuando la computadora evalúa una expresión que contiene una variable, busca el contenido en la dirección de la variable y almacena el resultado en la memoria ocupada por la variable en la dirección de la variable.
Por ejemplo, el código: int x = l; x = x 2; donde la primera x en la declaración "x = x 2;" se refiere a la memoria ocupada por el contenido de la variable.
Variables de puntero y las variables a las que hacen referencia: En lenguaje C, las direcciones también se utilizan como valores que se pueden almacenar, comparar y asignar. Los datos de dirección se denominan tipo de puntero, y las variables que almacenan valores de dirección. Se denominan variables de puntero y se denominan punteros. Un programa C puede utilizar el operador para obtener la dirección de una variable. Por ejemplo, el valor de la expresión x es la dirección de la variable X. Además de hacer referencia a las variables por su nombre, un programa también puede hacer referencia a las variables por dirección. Hacer referencia a una variable a través de su nombre se denomina referencia directa, mientras que la dirección de la variable A se almacena en otra variable B. Hacer referencia a la variable A con la ayuda de la variable B se denomina referencia indirecta a A.
La forma general de definir una variable de puntero es: escriba * nombre de variable de puntero; o escriba * nombre de variable de puntero = expresión de valor inicial donde el nombre de la variable de puntero es un identificador y el símbolo "*" es; en la variable de puntero antes del nombre indica que la variable es un tipo de puntero. El "tipo" en la parte superior indica el tipo de variable o función a la que puede apuntar la variable puntero. La expresión de valor inicial es una expresión de dirección. Si hay una expresión de dirección de una variable en la expresión, la variable debe definirse de antemano.
En lenguaje C, si una variable de puntero local se define sin un valor inicial asignado, su valor no está definido. Cuando un programa los utiliza, primero se les debe asignar un valor. El abuso de variables indicadoras con valores inciertos para hacer referencia indirecta a otras variables puede provocar errores inesperados. Para dejar claro que una variable de puntero no hace referencia a ninguna variable, en lenguaje C, el valor de una variable de puntero es 0, que es NULL.
Por ejemplo, ip = NULL; una variable de puntero con un valor de 0 también se denomina puntero nulo. Si a una variable de puntero estática no se le asigna un valor inicial cuando se define, se le asigna automáticamente un valor inicial de 0.
Las variables de puntero utilizan el valor de dirección (inicial) del objeto del programa; no se puede asignar un número entero ni ningún otro valor que no sea de dirección a una variable de puntero. Además, las variables de puntero tienen restricciones de tipo en los objetos a los que apuntan, por lo que no se puede asignar la dirección de un objeto al que no se puede apuntar a una variable de puntero.
Si existe la siguiente definición: int i = 100, j, *ip, *intpt; float f, *fp; iP = amp; i; /* Hacer que ip apunte a i */ intpt = ip /* Hacer que intpt apunte a la variable apuntada por ip */ fp = amp /* Hacer que fp apunte a un número positivo */ ip = NULL; /* Hacer que ip ya no apunte a ninguna variable*/:
En informática, un puntero es un objeto en un lenguaje de programación.
Usando una dirección, su valor puede apuntar directamente a (apuntar a) un valor que existe en otra ubicación en la memoria de la computadora. Dado que la dirección encuentra la unidad variable deseada, podemos decir que la dirección apunta a la unidad variable. Por lo tanto, la dirección se denomina en sentido figurado "puntero".
Esto significa que se puede encontrar la unidad de memoria donde se encuentra la dirección. En los lenguajes de alto nivel, los punteros reemplazan efectivamente el uso directo de registros de propósito general en lenguajes de nivel inferior, como el lenguaje ensamblador y el código de máquina, pero solo se pueden usar para direcciones legales. Un puntero hace referencia a una dirección en la memoria y el valor almacenado en esa dirección se puede recuperar mediante una operación llamada desreferenciación del puntero.
Por ejemplo, si piensa en la memoria de la computadora como un libro, una nota adhesiva con un número de página y línea puede considerarse como un puntero a una página específica y seguir las instrucciones que aparecen en ella; la nota adhesiva. El número de página y el número de línea leen la línea de texto en la página, que es equivalente al puntero de referencia posterior.
Los punteros son un concepto importante en los lenguajes de programación. La función de los punteros en los programas C es la siguiente:
Utilice un puntero para hacer referencia indirecta al objeto al que apunta.
El uso de varios tipos de punteros como parámetros formales puede agregar capacidades descriptivas a la función.
La combinación de punteros y matrices le permite hacer referencia a elementos de una matriz de más formas y acceder a estos elementos de una manera más flexible.
Los punteros se pueden utilizar para describir datos y relaciones entre datos para construir estructuras de datos complejas. Cuando un dato A quiere asociarse con otro dato B, agregar un puntero a los datos B en los datos A puede realizar la asociación entre los datos A y los datos B. En combinación con las instalaciones de almacenamiento de asignación dinámica proporcionadas por el sistema, también se pueden construir varias estructuras de datos dinámicas.