¿Por qué necesitamos variables de referencia si tenemos punteros?

Punteros : un puntero es una variable que contiene la dirección de memoria de otra variable. Un puntero debe ser referenciado con el operador * para acceder a la ubicación de memoria a la que apunta. Referencias : una referencia se puede llamar como un puntero constante que se desreferencia implícitamente. Cuando accedemos a la … Continue reading «¿Por qué necesitamos variables de referencia si tenemos punteros?»

Aritmética de punteros en C con ejemplos

Las variables de puntero también se conocen como tipos de datos de dirección porque se utilizan para almacenar la dirección de otra variable. La dirección es la ubicación de memoria que se asigna a la variable. No almacena ningún valor.  Por lo tanto, solo hay unas pocas operaciones que se permiten realizar en punteros en … Continue reading «Aritmética de punteros en C con ejemplos»

C | Puntero avanzado | Pregunta 4

#include <stdio.h>    char *c[] = {«GeksQuiz», «MCQ», «TEST», «QUIZ»}; char **cp[] = {c+3, c+2, c+1, c}; char ***cpp = cp;    int main() {     printf(«%s «, **++cpp);     printf(«%s «, *–*++cpp+3);     printf(«%s «, *cpp[-2]+3);     printf(«%s «, cpp[-1][-1]+1);     return 0; } (A) TEST sQuiz Z CQ (B) MCQ Quiz Z CQ (C) TEST Quiz Z CQ … Continue reading «C | Puntero avanzado | Pregunta 4»

¿Cuántos niveles de punteros podemos tener en C/C++?

Requisito previo: Puntero en C y C++ , Puntero doble (Puntero a puntero) en C Un puntero se utiliza para apuntar a una ubicación de memoria de una variable. Un puntero almacena la dirección de una variable y se puede acceder al valor de una variable eliminando la referencia del puntero. Un puntero generalmente se inicializa … Continue reading «¿Cuántos niveles de punteros podemos tener en C/C++?»

¿Qué es un puntero a un puntero nulo?

Puntero NULL en C A un nivel muy alto, podemos pensar en NULL como un puntero nulo que se usa en C para varios propósitos. Algunos de los casos de uso más comunes para NULL son Para inicializar una variable de puntero cuando esa variable de puntero aún no tiene asignada ninguna dirección de memoria … Continue reading «¿Qué es un puntero a un puntero nulo?»

C | Puntero avanzado | Pregunta 5

Predecir la salida #include <string.h> #include <stdio.h> #include <stdlib.h>    void fun(char** str_ref) {     str_ref++; }    int main() {     char *str = (void *)malloc(100*sizeof(char));     strcpy(str, «GeeksQuiz»);     fun(&str);     puts(str);     free(str);     return 0; } (A) GeeksQuiz (B) eeksQuiz (C) Valor basura (D) Error del compilador Respuesta: (A) Explicación: tenga en cuenta que str_ref es una variable … Continue reading «C | Puntero avanzado | Pregunta 5»

C | Puntero avanzado | Pregunta 10

Salida del siguiente programa #include <stdio.h> int fun(int arr[]) {    arr = arr+1;        printf(«%d «, arr[0]); } int main(void) {    int arr[2] = {10, 20};    fun(arr);    printf(«%d», arr[0]);    return 0; } (A) Error del compilador (B) 20 10 (C) 20 20 (D) 10 10 Respuesta: (B) Explicación: en C, los parámetros de array se tratan … Continue reading «C | Puntero avanzado | Pregunta 10»

C | Puntero avanzado | Pregunta 9

#include <stdio.h> #include <stdlib.h>    int main(void) {     int i;     int *ptr = (int *) malloc(5 * sizeof(int));        for (i=0; i<5; i++)         *(ptr + i) = i;        printf(«%d «, *ptr++);     printf(«%d «, (*ptr)++);     printf(«%d «, *ptr);     printf(«%d «, *++ptr);     printf(«%d «, ++*ptr); } (A) Error del compilador (B) 0 1 2 2 3 … Continue reading «C | Puntero avanzado | Pregunta 9»

C | Puntero avanzado | Pregunta 1 – Part 1

void fun(int *p)  {    int q = 10;    p = &q;  }           int main()  {    int r = 20;    int *p = &r;    fun(p);    printf(«%d», *p);    return 0;  } (A) 10 (B) 20 (C) Error del compilador (D) Error de tiempo de ejecución Respuesta: (B) Explicación: Inside fun(), q es una copia del puntero … Continue reading «C | Puntero avanzado | Pregunta 1 – Part 1»

C | Puntero avanzado | Pregunta 2

Suponga que el tamaño de un entero y un puntero es de 4 bytes. ¿Producción? #include <stdio.h>    #define R 10 #define C 20    int main() {    int (*p)[R][C];    printf(«%d»,  sizeof(*p));    getchar();    return 0; } (A) 200 (B) 4 (C) 800 (D) 80 Respuesta: (C) Explicación: La salida es 10*20*sizeof(int) que es “800″ para … Continue reading «C | Puntero avanzado | Pregunta 2»