Apuntadores y referencia en c++

Solo disponible en BuenasTareas
  • Páginas : 5 (1043 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de noviembre de 2010
Leer documento completo
Vista previa del texto
Programación I

Unidad 3
Punteros, referencias y arreglos

1 2 3 4 4.1 4.2 4.3 5 6 7

Creación Operaciones con punteros Referencias Arreglos Unidimensionales Bidimensionales Multidimensionales Cadenas de caracteres Asignación dinámica de memoria Uso de clases predefinidas

Programación I APUNTADORES O PUNTEROS Un puntero es una variable que contiene una dirección de memoria.Normalmente esa dirección es la posición de otra variable de memoria. Si una variable contiene la dirección de otra variable, entonces se dice que la primera variable apunta a la segunda. P es una variable de tipo puntero que apunta a la dirección de memoria 2CO3H, es decir apunta a la variable car., este último es una variable estática que contiene el carácter “A “. Declaración de un Apuntador. . CreaciónUna declaración de un puntero consiste en un tipo base, un * y el nombre de ka variable. La forma general para declarar una variable puntero es: Sintaxis: Tipo * nombre Ejemplo: Int *p Existen dos operadores especiales de punteros: & y * es un operador monario (solo necesita un operando) que devuelve la dirección de memoria de su operando; El *, es el complemento de &, devuelve el valor de lavariable localizada en la dirección que sigue: Ejemplo: Int x = 10, y; Int *p; P=& x; // asigna la dirección de x a p Y = *p; // Asigna el cont. De lo apuntado por p a y, o sea 10

Las variables puntero deben apuntar siempre a otra variable de su mismo tipo, aunque C permite apuntar a una variable de un tipo distinto sin mensajes de error durante la compilación en algunos casos, hacerlo seríaincongruente. Ejemplo: Float X = 10; Int *p; P = &x; // Las variables no son del mismo tipo Los punteros se declaran igual que el resto de las variables, pero precediendo el identificador con el operador de indirección, (*), que leeremos como "puntero a". Sintaxis: *; Ejemplos: Int *entero; Char *carácter; Struct stPunto *punto; Los punteros siempre apuntan a un objeto de un tipo determinado, en elejemplo, "entero" siempre apuntará a un objeto de tipo "int".

Apuntes del: Ing. Jorge Eloy Toledo Coronel

Programación I La forma: * ; con el (*) junto al tipo, en lugar de junto al identificador de variable, también está permitida. Veamos algunos matices. Tomemos el primer ejemplo: Int *entero; Equivale a: Int* entero; Debes tener muy claro que "entero" es una variable del tipo "punteroa int", y que "*entero" NO es una variable de tipo "int". Si "entero" apunta a una variable de tipo "int", "*entero" será el contenido de esa variable, pero no olvides que "*entero" es un operador aplicado a una variable de tipo "puntero a int", es decir "*entero" es una expresión, no una variable. Para averiguar la dirección de memoria de cualquier variable usaremos el operador de dirección (&),que leeremos como "dirección de". Declarar un puntero no creará un objeto. Por ejemplo: "int *entero;" no crea un objeto de tipo "int" en memoria, sólo crea una variable que puede contener una dirección de memoria. Se puede decir que existe físicamente la variable "entero", y también que esta variable puede contener la dirección de un objeto de tipo "int". Lo veremos mejor con otro ejemplo: IntA, B; Int *entero; B = 213; /* B vale 213 */ Entero = &A; /* entero apunta a la dirección de la variable A */ *entero = 103; /* equivale a la línea A = 103; */ B = *entero; /* equivale a B = A; */ ... En este ejemplo vemos que "entero" puede apuntar a cualquier variable de tipo "int", y que podemos hacer referencia al contenido de dichas variables usando el operador de indirección (*). Como todaslas variables, los punteros también contienen "basura" cuando son declaradas. Es costumbre dar valores iniciales nulos a los punteros que no apuntan a ningún sitio concreto: Entero = NULL; Carácter = NULL; NULL es una constante, que está definida como cero en varios ficheros de cabecera, como "stdio.h" o "iostream.h", y normalmente vale 0L. . Correspondencia entre arrays y punteros: Existe una...
tracking img