Diferencia entre revisiones de «ampersan»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripción == El operador de '''ampersand''' <nowiki>(&)</nowiki> se usa para este propósito. Si x es una variable, entonces <nowiki>&x</nowiki> representa la direcci...»)
 
(Descripción)
 
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
El operador de '''ampersand''' <nowiki>(&)</nowiki> se usa para este propósito. Si x es una variable, entonces <nowiki>&x</nowiki> representa la dirección de la variable x.
+
El operador de '''ampersand''' <nowiki>(&)</nowiki> se usa para obtener la dirección de memoria (puntero) de una variable individual.
 +
 
 +
El tipo de puntero obtenido es igual al tipo de dato del operando; en caso de que el valor apuntado requiera "reinterpretación" (que no es lo mismo que la conversión explícita o casting), el tipo de puntero debe ser convertido explícitamente. Este truco es útil para directamente leer o modificar cualquier variable como una simple matriz de [[byte|bytes]].
 +
 
 +
{{Nota|Es incluso válido obtener el puntero de otro puntero, y el de un elemento de una matriz.}}
  
 
== Sintexis ==
 
== Sintexis ==

Revisión actual del 22:03 8 ago 2018

Descripción

El operador de ampersand (&) se usa para obtener la dirección de memoria (puntero) de una variable individual.

El tipo de puntero obtenido es igual al tipo de dato del operando; en caso de que el valor apuntado requiera "reinterpretación" (que no es lo mismo que la conversión explícita o casting), el tipo de puntero debe ser convertido explícitamente. Este truco es útil para directamente leer o modificar cualquier variable como una simple matriz de bytes.

Nota: Es incluso válido obtener el puntero de otro puntero, y el de un elemento de una matriz.


Sintexis

variable1 = &variable2;

Parámetros

variable1
variable2

Advertencias

Los punteros son uno de los temas más complicados para los principiantes en el aprendizaje de C, y es posible escribir la gran mayoría de los bocetos de Arduino sin encontrar punteros. Sin embargo, para manipular ciertas estructuras de datos, el uso de punteros puede simplificar el código, y el conocimiento de la manipulación de punteros es útil para tener en el kit de herramientas.

Ejemplo

byte *p, i=5, resultado;
p=&i;               //5
resultado = *p;     //resultado toma el valor de la posicion de memoria p

Vea también

Referencia