Categories: All - variables - reglas - memoria - sintaxis

by HALEN MOISES CHOEZ LOOR 5 years ago

503

PUNTEROS

Los punteros son elementos fundamentales en la programación que permiten almacenar y gestionar direcciones de memoria de otras variables, facilitando así la manipulación de datos. Para utilizar punteros correctamente, es crucial entender dos reglas principales:

PUNTEROS

PUNTEROS

El manejo de punteros es fundamental para conceptos futuros como la creación y liberación de objetos en tiempo de ejecución de un programa.

operador de indirección (*) devuelve un alias para el objeto al cual apunta el operando del puntero.
Aritmética de Punteros

EJEMPLO: #include using std::cout; using std::endl; void main() { int X[6] = { 1, 2, 3, 4, 5, 6 }; int *prtX; prtX = X; // incializo el valor del puntero. cout << endl << *prtX; prtX += 2; cout << endl << *prtX; prtX -= 2; cout << endl << *prtX; prtX++; cout << endl << *prtX; }

Punteros Genéricos

EJEMPLO: int *puntero; funcion (*puntero); .... void funcion (void *p) int *q; q=(int *)p; //En C se podria hacer q = p;

Punteros a Punteros

Ejemplo: int a=0; //Supongamos que es una variable cuya direccion es 0x1601 int *puntero1=&a; //El puntero tiene guardada la direccion de a, //pero este tiene como direccion 0x1890 int **puntero2=&puntero1; //**puntero 2 guarda la direccion 0x1890

operador de dirección (&) devuelve la dirección de memoria de su operando
Punteros y vectores (arrays)

EJEMPLO: int X[15]; int *ptrX; ptrX = X; // ptrX recibe la dirección del primer elemento ( 0 ) de X

Punteros Constantes

EJEMPLO: int a=10,b=20; int * const p = &a; //objeto variable y puntero constante *p = 15; // Correcto: El valor apuntado es variable. p=&b; //ERROR: p es constante.

Matrices de punteros

Ejemplo: const char *dias[7] = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" }

Punteros a cadenas de caracteres

Ejemplo: char nombre[]="Gustavo A. Chavarria"; //declaramos un array de caracteres char *puntero=nombre;//Asignamos al puntero el comienzo del array printf("%s \nIngrese otro nombre: ",puntero);//Escribimos en pantalla nombre... gets(puntero); //leemos otro nombre printf("%s",puntero); //escribimos el nuevo nombre...

Los punteros son variables que almacenan direcciones de memoria de otra variable.

Sintaxis int *ptrID, ID; ID = 8; ptrID = &ID; // puntero a ID
AYUDA PARA MEMORIZAR 1. Pensar en & como una dirección. 2. Pensar en * como una estrella que señala un almacenamiento. Asumimos de momento, que “pt1” y “pt2” son punteros (en breve trataremos la manera para definirlos). Como punteros, no contienen el valor de una variable, pero si contienen su dirección y pueden ser usados para apuntar a una variable. La línea 6 del programa ejemplo destina el puntero “pt1” a apuntar a la variable que hemos definido como “index”, porque hemos asignado la dirección de “index” a “pt1”. Dado que tenemos un puntero para “index”, podemos manipular su valor llamando a la variable por su nombre o también al puntero. En la línea 9 modificamos el valor usando el puntero. Como que “pt1” apunta a la variable “index”, colocando una estrella en el puntero, nos referimos a la ubicación en memoria a la que apunta. La línea 9 también asigna 13 a “index”. En cualquier lugar del programa donde sea permitido usar la variable “index” lo será también usar “*pt1”, dado que su sentido es idéntico mientras el puntero no sea asignado a otra variable.
Un puntero se definen de la siguiente manera: * ;
DOS IMPORTANTES REGLAS Las siguientes reglas son muy importantes a la hora de usar punteros, y deben ser perfectamente aprendidas. 1. Un nombre de variable, precedido por un signo de amperson define la dirección de la variable, y ocasionalmente “la apunta”. Puede leerse la línea 6 del programa como “pt1 es asignado al valor de la dirección de index”. 2. Un puntero con una estrella precediéndole se refiere al valor de la variable apuntada por el puntero. La línea 9 del programa puede leerse como: “al puntero pt1 le es asignado el valor 13″.