Aplicaciones de Punteros en C/C++

Prerrequisito: punteros en C/C++ , diseño de memoria de programas C.   Para pasar argumentos por referencia . Pasar por referencia tiene dos propósitos (i) Modificar variable de función en otra. Ejemplo para intercambiar dos variables;  C // C program to demonstrate that we can change // local values of one function in another using pointers. … Continue reading «Aplicaciones de Punteros en C/C++»

¿Cómo asignar dinámicamente una array 2D en C?

  Las siguientes son diferentes formas de crear una array 2D en el montón (o asignar dinámicamente una array 2D). En los siguientes ejemplos, hemos considerado ‘ r ‘ como número de filas, ‘ c ‘ como número de columnas y creamos una array 2D con r = 3, c = 4 y los siguientes … Continue reading «¿Cómo asignar dinámicamente una array 2D en C?»

Pasar referencia a un puntero en C++

Prerrequisito : Punteros vs Referencias en C++ . Para una comprensión clara, comparemos el uso de «puntero a puntero» VS «Referencia a puntero» en algunos casos. Nota: Está permitido usar «puntero a puntero» tanto en C como en C++, pero podemos usar «Referencia a puntero» solo en C++. Pasar puntero a una función Si se … Continue reading «Pasar referencia a un puntero en C++»

Error común relacionado con la memoria/puntero en los programas C

Desreferenciar una ubicación de memoria desconocida : los programadores de C utilizan principalmente la función scanf() para recibir información, pero a veces un pequeño error puede generar un error o incluso bloquear todo el programa. La sintaxis de scanf() es scanf(“%d”, &a); . Es posible que se pierda un & y escriba &a como un … Continue reading «Error común relacionado con la memoria/puntero en los programas C»

Diferencia entre +****p, *p++ y *++p

Prediga la salida de los siguientes programas en C.  C // PROGRAM 1 #include <stdio.h> int main(void) {     int arr[] = {10, 20};     int *p = arr;     ++*p;     printf(«arr[0] = %d, arr[1] = %d, *p = %d»,                           arr[0], arr[1], *p);     return 0; } C // PROGRAM 2 #include <stdio.h> int main(void) {     int arr[] = … Continue reading «Diferencia entre +****p, *p++ y *++p»

¿Cómo encontrar un error de segmentación en C y C++? (Usando GDB)

¿Qué es el error de segmentación ? – Es el error de tiempo de ejecución causado por la violación de acceso a la memoria. Por ejemplo: -Stackoverflow, lectura de violación, etc. A menudo nos enfrentamos a este problema cuando trabajamos con punteros en c++/c. En este ejemplo veremos cómo encontrar el error de segmentación en … Continue reading «¿Cómo encontrar un error de segmentación en C y C++? (Usando GDB)»

Puntero de función en C

En C, como punteros de datos normales (int *, char *, etc.), podemos tener punteros a funciones. El siguiente es un ejemplo simple que muestra la declaración y la llamada de función usando el puntero de función. #include <stdio.h> // A normal function with an int parameter // and void return type void fun(int a) … Continue reading «Puntero de función en C»

¿Qué es la asignación de memoria dinámica?

Los recursos son siempre una prima. Nos hemos esforzado por lograr una mejor utilización de los recursos en todo momento; esa es la premisa de nuestro progreso. Relacionado con esta búsqueda, está el concepto de asignación de memoria. La memoria debe asignarse a las variables que creamos, de modo que las variables reales puedan cobrar … Continue reading «¿Qué es la asignación de memoria dinámica?»

¿Diferencia entre puntero y array en C?

  Los punteros se utilizan para almacenar direcciones de arrays asignadas dinámicamente y para arrays que se pasan como argumentos a funciones. En otros contextos, las arrays y el puntero son dos cosas diferentes, consulte los siguientes programas para justificar esta afirmación. Comportamiento del operador sizeof  C++ // 1st program to show that array and pointers … Continue reading «¿Diferencia entre puntero y array en C?»