Font size
WorksheetsApuntadores en C
Total questions: 20
Worksheet time: 20mins
Si un entero ocupa 4 bytes, y se define un array de dos enteros (Vector[2]) y está almacenado a partir de la posición 100 de memoria. Se ejecuta el código:
Vector[0] = 20;
Vector[1] = 30;
¿Qué valor tiene el entero almacenado en la posición de memoria 104?
31
20
104
30
¿Y, en qué dirección de memoria está almacenado el primer elemento (Vector[0]) ?
104
102
100
101
En un programa se definen estas dos variables:
int i = 10;
int *iptr;
Si la variable i está almacenada en la posición de memoria 100, ¿qué valor contiene la variable iptr?
El valor 104 porque es la posición siguiente a la que ocupa i
Ningún valor porque no ha sido inicializada.
Su propia dirección de memoria.
El valor 100 que es la dirección de la variable i
Si una variable tiene que almacenar la dirección de un carácter, ¿qué tipo debe tener su declaración?
char *
string *
* char
char
Dadas dos variables de cualquier tipo en un programa en C, considere la siguiente expresión:
&a == &b;
La expresión es incorrecta.
La expresión es correcta y es siempre falsa.
La expresión es correcta y es siempre cierta.
La expresión es correcta y será cierta o falsa dependiendo de los valores de a y b.
Se definen las variables a de tipo entero, b de tipo puntero a entero, y c de tipo puntero a entero. ¿Cómo se consigue que c tenga la dirección del entero a?
b = a; c = b;
b = a; c = &b;
b = &a; c = b;
b = &a; c = &b;
Se definen los enteros A y B, y el apuntador a entero C, y se asignan los valores: A = 15; B = 25;
Si ejecuto C=&A; *C+=B;
¿Qué se imprime con printf("%i", *C); ?
15
25
NULL
40
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
¿Qué se imprime con printf("%i", Vec); ?
{2,5,7,3,9}
2
100
104
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
¿Qué se imprime con printf("%i", *(Vec+3) ); ?
3
103
[2,5,7,3]
Genera un error
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
Y un apuntador a un entero *c, y ejecuto c=&Vec[2];
¿Qué se imprime con printf("%i", c ); ?
[2,5,7]
7
2
108
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
Y un apuntador a un entero *c, y ejecuto c=Vec;
¿Qué se imprime con printf("%i", *c ); ?
100
2
102
Vec
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
Y un apuntador a un entero *c, y ejecuto c=Vec;
¿Qué se imprime con printf("%i", c + 3 ); ?
3
112
Genera un error
7
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
Y un apuntador a un entero *c, y ejecuto c=Vec;
¿Qué se imprime con printf("%i", *(c + 4) ); ?
4
9
104
Genera error
Si tengo un entero A y un apuntador a entero *C,
¿Cuál de las siguientes instrucciones es incorrecta?
C = NULL;
C = &A;
C = 5;
C = 0;
Si tengo un entero A y un apuntador a entero *C,
¿Cuál instrucción es incorrecta?
*C = 5;
C = &A;
A = 5;
C = 0;
Si tengo definido un arreglo que empieza en la posición de memoria 100:
int Vec[ ] = {2,5,7,3,9};
Y un apuntador a un entero *c, y ejecuto c=Vec;
¿Qué se imprime con printf("%i", *c + 3 ); ?
2
5
103
Genera error
Con la siguiente declaración, ¿cómo podemos saber el número de elementos del array?
int array[15]={0};
sizeof(array);
strlen(array);
sizeof(array) / sizeof(int);
sizeof(array) * sizeof(int);
Si defino char *cad Cuántos bytes de memoria se reservan con la instrucción:
cad = (char *)malloc( strlen("Feliz")+1);
(a)
Si defino las variables char s1[30]="Jack", s2[30] = "Hill", s3[30];
Qué se imprime con:
printf("%s", strcpy(s3,s2) );
Jack Hill
Jack
Hill
Hill Jack
Si defino las variables char s1[30]="Jack", s2[30] = "Hill", s3[30];
Qué se imprime con:
printf("%s", strcat( strcat( strcpy( s3,s1 )," y "), s2));
Hill y Jack
Hill
Jack y Hill
Jack
