tarea de lenguajes_héctor bonilla
DESCRIPTION
jjjTRANSCRIPT
-
Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914
1. Ejecute el siguiente programa, muestre que imprime y responda las siguientes
preguntas.
#include
void main(void)
{
char a, *pa; //Instruccin 1
pa=&a; // Instruccin 2
printf("pa=&a--> pa=%p\n", pa);
pa=pa+1; // Instruccin 3
printf("pa=pa+1--> pa=%p\n", pa);
pa=pa+3; // Instruccin 4
printf("pa=pa+3--> pa=%p\n", pa);
pa=pa-1; // Instruccin 5
printf("pa=pa-1--> pa=%p\n", pa);
}
a) Se puede adicionar un entero a una variable como pa que guarda
direcciones de memoria?
En efecto, se puede sumar un entero a la variable pa que hace referencia a
una direccin de memoria, dado que la aritmtica de operadores para
apuntadores no suma las direcciones de memoria, sino los elementos, es
decir que si se incrementa en uno a una variable de apuntador a entero
no se incrementa un byte, sino dos bytes, porque es el espacio que ocupa
un entero en memoria.
b) Se pueden sustraer enteros de una variable como pa que guarda
direcciones de memoria?
En efecto si se sustrae un entero a la variable pa, se decrementa en el
entero proporcionado en la cantidad de byte.
c) Se pueden multiplicar enteros a una variable como pa que guarda
direcciones de memoria?
Claramente esta operacin aritmtica no se puede establecer, puesto que
la variable pa es un apuntador y la multiplicacin de enteros con la
variable que registra las direcciones de memoria, no es posible y se
presenta en el siguiente error al ejecutar, la siguiente pregunta:
Que se obtendr al ejecutar pa = pa * 3?
Se obtiene un error al realizar esta operacin porque de nuevo pa es una
direccin de memoria.
d) Cul es la primera direccin guardada en pa en la instruccin 3?
pa=0028FF1B
e) Despus de que se agrega 1 a pa en la instruccin 3?, cul es la direccin
guardada en pa?
pa=0028FF1C
-
Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914
f) Despus de que se agrega 3 a pa en la instruccin 4, cul es la direccin
guardada en pa?
pa=0028FF1F
g) Despus de que se resta 1 a pa en la instruccin 5, cul es la direccin
guardada en pa?
pa=0028FF1E
h) Asuma si se cambia la instruccin 1 a la instruccin: int a, *pa:
1. Cul es la primera direccin guardada en pa en la instruccin 3?
pa=0028FF18
2. Despus de que se agrega 1 a pa en la instruccin 3, cul es la
direccin guardada en pa?
pa=0028FF1C
3. Despus de que se agrega 3 a pa en la instruccin 4, cul es la
direccin guardada en pa?
pa=0028FF28
4. Despus de que se resta 1 a pa en la instruccin 5, cul es la direccin
guardada en pa?
pa=0028FF24
i) Agregar 1 a la variable que guarda la direccin de memoria de un carcter
agrega 1 al nmero guardado en la direccin?
Si se agrega 1 al apuntador pa de un carcter este se incrementa en un 1 al nmero que se tena en memoria, por ejemplo si el dato es carcter, el
apuntador pa= 0028FF1B (Instruccin 2) y si adiciona 1 a la variable pa,
se obtiene pa=0028FF1C (Instruccin 3), es decir que se agrega uno al
nmero guardado en memoria.
j) Agregar 1 a la variable que guarda la direccin de memoria de un entero
agrega 1 al nmero guardado en la direccin?
Para este caso, si agrega 1 a la direccin de memoria no se adiciona en 1 al
nmero guardado en la direccin si se trabaja en dato de tipo entero.
2. Considere el siguiente programa errorcin.c:
#include
int main()
{
int tamano;
char *miVector;
/*pide el tamao del vector */
tamao=scanf("Tamano? %d", tamano);
/*carga el vector con enteros pares */
int i=0;
while (i
-
Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914
/* imprime los valores en orden inverso */
int j;
for (j=tamano-1; j>=0; j++)
{
printf("%d\n", miVector[j]);
}
/* imprime los valores en orden original */
int k;
for (k=0; k
-
Tarea de Lenguajes: Fundamentos y Estructura de Programacin Estudiante: Hctor Fabio Bonilla-Cdigo: 100054914
/* imprime los valores en orden original */
for (k=0; k