wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Apuntadores en C

Total questions: 20

Worksheet time: 20mins

Name
Class
Date
1.

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?

a)

31

b)

20

c)

104

d)

30

2.

¿Y, en qué dirección de memoria está almacenado el primer elemento (Vector[0]) ?

a)

104

b)

102

c)

100

d)

101

3.

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?

a)

El valor 104 porque es la posición siguiente a la que ocupa i

b)

Ningún valor porque no ha sido inicializada.

c)

Su propia dirección de memoria.

d)

El valor 100 que es la dirección de la variable i

4.

Si una variable tiene que almacenar la dirección de un carácter, ¿qué tipo debe tener su declaración?

a)

char *

b)

string *

c)

* char

d)

char

5.

Dadas dos variables de cualquier tipo en un programa en C, considere la siguiente expresión:

&a == &b;

a)

La expresión es incorrecta.

b)

La expresión es correcta y es siempre falsa.

c)

La expresión es correcta y es siempre cierta.

d)

La expresión es correcta y será cierta o falsa dependiendo de los valores de a y b.

6.

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?

a)

b = a; c = b;

b)

b = a; c = &b;

c)

b = &a; c = b;

d)

b = &a; c = &b;

7.

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); ?

a)

15

b)

25

c)

NULL

d)

40

8.

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); ?

a)

{2,5,7,3,9}

b)

2

c)

100

d)

104

9.

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) ); ?

a)

3

b)

103

c)

[2,5,7,3]

d)

Genera un error

10.

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 ); ?

a)

[2,5,7]

b)

7

c)

2

d)

108

11.

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 ); ?

a)

100

b)

2

c)

102

d)

Vec

12.

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 ); ?

a)

3

b)

112

c)

Genera un error

d)

7

13.

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) ); ?

a)

4

b)

9

c)

104

d)

Genera error

14.

Si tengo un entero A y un apuntador a entero *C,

¿Cuál de las siguientes instrucciones es incorrecta?

a)

C = NULL;

b)

C = &A;

c)

C = 5;

d)

C = 0;

15.

Si tengo un entero A y un apuntador a entero *C,

¿Cuál instrucción es incorrecta?

a)

*C = 5;

b)

C = &A;

c)

A = 5;

d)

C = 0;

16.

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 ); ?

a)

2

b)

5

c)

103

d)

Genera error

17.

Con la siguiente declaración, ¿cómo podemos saber el número de elementos del array?

int array[15]={0};

a)

sizeof(array);

b)

strlen(array);

c)

sizeof(array) / sizeof(int);

d)

sizeof(array) * sizeof(int);

18.

Si defino char *cad Cuántos bytes de memoria se reservan con la instrucción:


cad = (char *)malloc( strlen("Feliz")+1);

(a)  

19.

Si defino las variables char s1[30]="Jack", s2[30] = "Hill", s3[30];

Qué se imprime con:

printf("%s", strcpy(s3,s2) );

a)

Jack Hill

b)

Jack

c)

Hill

d)

Hill Jack

20.

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));

a)

Hill y Jack

b)

Hill

c)

Jack y Hill

d)

Jack