Sunteți pe pagina 1din 4

1. Qu es una direccin de memoria?

La direccin de memoria es un identificador nico para una ubicacin de la memoria, con las cuales una CPU u otros dispositivos puede almacenar, modificar o recuperar datos de la misma. En la mayora de las computadoras modernas, cada direccin de memoria apunta a un solo byte de almacenamiento (el byte es la unidad de memoria mnima a la que se puede acceder), lo que es llamado direccionamiento por bytes. 2. Qu es un puntero? Un puntero es una variable que contiene una direccin de memoria. Normalmente, esa direccin es la posicin de otra variable de memoria. Si una variable contiene la direccin de otra variable, entonces se dice que la primera variable apunta a la segunda. 3. Como se declara una variable tipo puntero? Una declaracin de un puntero consiste en un tipo base, un * y el nombre de la variable. La forma general es: tipo *nombre; ---> Ejemplo: int *p;

4Cules son los dos operadores especiales de punteros? Existen dos operadores especiales de punteros: & y *. El operador de direccin (&) devuelve la direccin de memoria de su operando. 5. Qu devuelve cada operador?

El operador de indireccin (*) devuelve el contenido de la direccin apuntada por el operando.

6.

Cmo se accede indirectamente al valor de una variable de tipo base usando una variable puntero? Cmo se usan los punteros para pasar parmetros a funciones? Por Referencia: Lo que se pasa a la funcin es la direccin de memoria del parmetro actual, en consecuencia debe ser una variable. As, una variable pasada como parmetro actual es compartida; es decir, puede ser accedida y modificada durante la ejecucin de la funcin. El paso de parmetros por referencia permite devolver varios valores desde un procedimiento a travs de los parmetros actuales.

7.

Sintaxis: void nombre (tipo_dato &parmetro_formal_1, tipo_dato &parametro_formal_2, ..., tipo_dato &parametro_formal_n) { // Cuerpo de la funcin } Llamada a la funcin: nombre (parmetro_actual_1, parametro_actual_2, , parametro_actual_n); Ejemplo: #include <stdio.h> // Prototipo de la funcion f1 void f1(int, int); // Prototipo de la funcion f2 void f2 (int &, int &); void main( ) { int u = 1, v = 3; printf(u = %i v = %i antes de la llamada a f1,u,v); f1(u, v); printf(u = %i v = %i despues de la llamada a f1,u,v); f2(u, v); printf(u = %i v = %i despues de la llamada a f2,u,v); } void f1 (int a, int b) { a = 0; b = 0; printf(a = %i, b = %i dentro de f1,a,b); } void f2 (int &a, int &b)

{ a = 0; b = 0; printf(a = %i, b = %i dentro de f1,a,b); }

8.

Qu se conoce como indireccin mltiple o puntero a puntero? Se puede hacer que un puntero apunte a otro puntero que apunte a un valor de destino. Esta situacin se denomina indireccin mltiple o punteros a punteros. Una variable que es puntero a puntero tiene que declararse como tal. Esto se hace colocando un * adicional en frente del nombre de la variable. Por ejemplo, la siguiente declaracin inicial indica al compilador que ptr es un puntero a puntero de tipo float:float **ptr;

9.

Cules son las dos operaciones aritmtica que se pueden usar con punteros?

Suma y resta de punteros.

10.

Cmo se usa la aritmtica de direcciones para acceder a los elementos de un arreglo? Cada vez que se incrementa un puntero, apunta a la posicin de memoria del siguiente elemento de su tipo base. Cada vez que se decrementa, apunta a la posicin del elemento anterior. Con punteros a caracteres parece una aritmtica normal, sin embargo,el resto de los punteros aumentan o decrecen la longitud del tipo de datos a los que apuntan. Por ejemplo, si asumimos que los enteros son de dos bytes de longitud y p1 es un puntero a entero con valor actual 2000. Entonces, despus de la expresin p1++; p1 contiene el valor 2002, no 2001.

11.

En que consiste un arreglo de punteros?

Los punteros pueden estructurarse en arrays como cualquier otro tipo de datos. La declaracin, por ejemplo, para un array de punteros a enteros de tamao 10 es: int *x[10];

12. Cul es el uso de la funcin sizeof? Es utilizada para obtener (Reservar) el tamao en bytes de un tipo de valor como puede ser (int, float, char, double, short int...). Para esto se debe saber exactamente el nmero de bytes que ocupa cualquier estructura de datos. 13. Explique la sintaxis de sizeof. (3*sizeof(int)); 14. Cul es el uso de las funciones malloc y free? Free : Libera el espacio de memoria dinamicamente. Malloc: Reserva el espacio de memoria dinmicamente.

15. Explique la sintaxis de malloc y free. Malloc char* ptr= (char*)malloc(1000); Sintaxis free free (ptr);

. 16 Cundo es recomendable asignarle el valor nulo a una variable puntero?


Despus de declarar un puntero, pero antes de asignarle un valor, ste contiene un valor desconocido; si en ese instante lo intenta utilizar, probablemente se estrellar, no slo el programa sino tambin el sistema operativo. Por convenio, se debe asignar el valor nulo a un puntero que no este apuntando a ningn sitio, aunque sto tampoco es seguro.

S-ar putea să vă placă și