WorksheetsTema 6 Programación Básica
Total questions: 40
Worksheet time: 20mins
¿Cuál es la forma correcta de declarar un puntero a un entero?
int p;
int *p;
int &p;
int p*;
¿Qué valor almacena un puntero después de ser declarado pero antes de ser inicializado?
La dirección de memoria de una variable.
Cero.
Un valor aleatorio o basura.
El valor de una constante.
¿Cuál es la forma correcta de inicializar un puntero a un entero a?
int *p = &a;
int *p = a;
int p = &a;
int p = *a;
¿Qué se debe hacer antes de usar un puntero que ha sido declarado?
Declarar otro puntero.
Inicializar el puntero a una dirección de memoria válida.
Multiplicarlo por 2.
Dividirlo por 2.
¿Qué hace el siguiente código?
int a = 5;
int *p = &a;
Declara a como un puntero y lo inicializa a 5.
Declara p como un puntero y almacena la dirección de a en p.
Declara p como un entero y almacena la dirección de a en p.
Declara a como un puntero y p como un entero.
¿Qué sucede si se intenta desreferenciar un puntero no inicializado?
Se obtiene el valor almacenado en la variable a la que apunta.
Se obtiene siempre el valor cero.
Se puede producir un comportamiento indefinido y potencialmente un error de segmentación.
Se inicializa el puntero automáticamente a una dirección válida.
¿Cuál es el resultado de la siguiente declaración e inicialización de punteros?
int x = 7;
int *p1 = &x;
int *p2 = p1;
p1 y p2 apuntan a diferentes direcciones de memoria.
p1 y p2 apuntan a la misma dirección de memoria.
p1 apunta a x y p2 no está inicializado.
p2 almacena el valor de x.
¿Cuál es la declaración correcta para un puntero constante a un entero?
const int *p;
int *const p;
const int const *p;
int const *p;
¿Cuál es el operador de desreferencia?
&
*
%
#
¿Cuál es el operador que se usa para obtener la dirección de una variable?
&
*
%
#
¿Qué hace el operador * en la declaración int *p;?
Declara una variable entera.
Declara un puntero a un entero.
Declara una referencia a un entero.
Declara un array de enteros.
¿Qué hace el siguiente código?
int a = 10;
int *p = &a;
Declara un entero a y un puntero p que almacena el valor de a.
Declara un entero a y un puntero p que almacena la dirección de a.
Declara un puntero a y un entero p.
Declara dos punteros.
¿Qué valor contiene p después de la siguiente declaración?
int a = 5;
int *p = &a;
5
Dirección de memoria de a
Un valor indefinido
0
¿Qué sucede cuando se desreferencia un puntero no inicializado?
Se obtiene el valor de la variable apuntada.
Se obtiene siempre el valor cero.
Puede provocar un comportamiento indefinido y un error de segmentación.
Se inicializa automáticamente.
¿Cuál es el propósito del operador & en la expresión int *p = &a;?
Multiplicar el valor de a por la dirección de a.
Asignar a p la dirección de la variable a.
Declarar a como un puntero.
Dividir el valor de a por 2.
En el contexto de punteros, ¿qué significa *p = 10; cuando p es un puntero a un entero?
p se convierte en 10.
p se convierte en un puntero a 10.
El valor de la variable a la que apunta p se convierte en 10.
La dirección de p se convierte en 10.
¿Qué se debe hacer antes de usar un puntero?
Declararlo únicamente.
Declararlo e inicializarlo con una dirección de memoria válida.
Declararlo y asignarle un valor nulo.
Declararlo e imprimir su valor.
¿Cuál es el resultado de printf("%d", *p); si int a = 5; int *p = &a;?
La dirección de a.
Un valor aleatorio.
El valor de a.
Un error de compilación.
¿Cómo accede *(arr + i) a los elementos de un array arr?
Accede al primer elemento de arr.
Accede al elemento en la posición i de arr.
Accede al último elemento de arr.
Accede al elemento en la posición i-1 de arr.
¿Qué hace el siguiente código? int a = 10; int *p = &a; p = 20;
Declara a como 10 y luego cambia su valor a 20 usando el puntero p.
Declara a como 10 y no cambia su valor.
Declara p como 20 y luego cambia su valor a 10.
Genera un error de compilación.
¿Qué es un puntero nulo?
Un puntero que apunta a la dirección 0.
Un puntero que almacena un valor no definido.
Un puntero que almacena un valor negativo.
Un puntero que almacena un valor positivo.
¿Qué hace el siguiente código? int a = 5; int *p = NULL; p = &a;
Declara a y p, pero p sigue siendo nulo.
Declara a, p es nulo inicialmente, pero luego p apunta a a.
Declara a y p, pero a se convierte en nulo.
Declara a y p, pero a sigue siendo 0.
¿Cómo se asigna un puntero nulo?
int *p = 0;
int *p = NULL;
int *p = &0;
int *p = 1;
¿Qué representa int *p; p = NULL;?
p es un puntero que apunta a una dirección de memoria válida.
p es un puntero que no apunta a ninguna dirección de memoria.
p es un entero que vale NULL.
p es un puntero que apunta a la dirección de memoria 0.
¿Cuál es el resultado de printf("%p", p); si p es un puntero nulo?
0
Un valor indefinido
NULL
Un error de compilación
¿Cómo se puede verificar si un puntero es nulo en C?
if (p == NULL)
if (*p == 0)
if (&p == NULL)
if (p == 0)
¿Qué hace el siguiente código? int a = 5; int *p = &a; int **pp = &p;
Declara pp como un puntero a un entero.
Declara pp como un puntero a un puntero que apunta a a.
Declara pp como un puntero a un puntero que apunta a p.
Declara pp como un puntero a un doble.
¿Qué hace **pp si int a = 5; int *p = &a; int **pp = &p;?
Desreferencia pp para obtener a.
Desreferencia pp para obtener p.
Desreferencia pp para obtener la dirección de a.
Desreferencia pp para obtener la dirección de p.
¿Qué significa "llamada por valor"?
Pasar la dirección de una variable a una función.
Pasar una copia del valor de una variable a una función.
Pasar una referencia a una variable a una función.
Pasar un puntero a una función.
¿Qué significa "llamada por referencia"?
Pasar una copia del valor de una variable a una función.
Pasar la dirección de una variable a una función.
Pasar un valor constante a una función.
Pasar un valor aleatorio a una función.
En una llamada por valor, ¿qué sucede con los cambios realizados en el parámetro dentro de la función?
Se reflejan en la variable original.
No afectan a la variable original.
Se almacenan en la dirección de memoria de la variable original.
Se reflejan en todas las variables del mismo tipo.
En una llamada por referencia, ¿qué sucede con los cambios realizados en el parámetro dentro de la función?
No afectan a la variable original.
Se reflejan en la variable original.
Se almacenan en una copia local.
Se descartan después de la ejecución de la función.
¿Cómo se pasa un entero por referencia a una función?
func(a);
func(&a);
func(*a);
func(**a);
¿Cuál es el resultado de la siguiente función?
void func(int a) {
a = 10;
}
int main() {
int x = 5;
func(x);
printf("%d", x);
}
5
10
0
Un error de compilación
¿Cuál es el resultado de la siguiente función?
void func(int *a) {
*a = 10;
}
int main() {
int x = 5;
func(&x);
printf("%d", x);
}
5
10
0
Un error de compilación
¿Qué pasa cuando se pasa un array a una función?
Se pasa una copia del array completo.
Se pasa la dirección del primer elemento del array.
Se pasa el tamaño del array.
Se pasa una referencia al último elemento del array.
¿Cómo se puede modificar el contenido de un array dentro de una función?
Pasando una copia del array a la función.
Pasando la dirección del array a la función.
Pasando el tamaño del array a la función.
Pasando una referencia al primer elemento del array.
¿Qué es necesario para cambiar el valor de una variable dentro de una función en C?
Pasar la variable por valor.
Pasar la dirección de la variable.
Pasar una copia de la variable.
Declarar la variable como global.
¿Qué hace el siguiente código?
void swap(int *a, int *b) {
int temp = *a;
a = b;
*b = temp;
}
Intercambia los valores de a y b pasados por referencia.
Intercambia los valores de a y b pasados por valor.
Intercambia las direcciones de a y b.
Intercambia las direcciones de a y b.
¿Qué sucede si se intenta modificar un parámetro pasado por valor dentro de una función?
La variable original se modifica.
Se genera un error de compilación.
Solo se modifica la copia local del parámetro.
