Articles of punteros

Punteros C y arrays / operador ‘sizeof’

Posible duplicado: diferencia de puntero de stack para puntero y matriz de char Para ilustrar mi pregunta: int main(void){ int myary[20]; int *myaryPtr; myaryPtr = myary; sizeof(myary); // Will it return 80? Correct? sizeof(myaryPtr); // Will it return 4? Correct? return 0; } En primer lugar, ¿mi suposición es correcta? Y luego, asumiendo que mi […]

Confusión con respecto a la modificación de la variable const usando punteros

El siguiente ejemplo añadió confusión en mi comprensión. No puedo entender cómo es posible modificar la variable const local. Por favor, ayúdame a entender lo mismo. /* Compile code without optimization option */ // volatile.c #include int main(void) { const int local = 10; int *ptr = (int*) &local; printf(“Initial value of local : %d […]

Determine de manera confiable la cantidad de elementos en una matriz

Cada progtwigdor C puede determinar el número de elementos en una matriz con esta conocida macro: #define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) Aquí hay un caso de uso típico: int numbers[] = {2, 3, 5, 7, 11, 13, 17, 19}; printf(“%lu\n”, NUM_ELEMS(numbers)); // 8, as expected Sin embargo, nada impide que el progtwigdor pase accidentalmente un puntero […]

¿El puntero garantiza conservar su valor después de `eliminar` en C ++?

Inspirado por esta pregunta . Supongamos que en el código C ++ tengo un puntero válido y lo elimino correctamente. De acuerdo con el estándar de C ++, el puntero se volverá inválido (3.7.3.2/4 – la función de desasignación dejará inválidos todos los punteros que hacen referencia a todas las partes del almacenamiento desasignado ). […]

¿El estándar ordena una conversión de valor l a valor de la variable de puntero cuando se aplica la indirección?

TL; DR Dado el siguiente código: int* ptr; *ptr = 0; ¿ *ptr requiere una conversión lvalue-a-rvalue de ptr antes de aplicar indirección? El estándar cubre el tema de lvalue-to-rvalue en muchos lugares, pero no parece especificar suficiente información para determinar si el operador * requiere tal conversión. Detalles La conversión de lvalor a rvalue […]

C # tipo de valor inseguro tipo array a byte array conversiones

Utilizo un método de extensión para convertir matrices flotantes en matrices de bytes: public static unsafe byte[] ToByteArray(this float[] floatArray, int count) { int arrayLength = floatArray.Length > count ? count : floatArray.Length; byte[] byteArray = new byte[4 * arrayLength]; fixed (float* floatPointer = floatArray) { fixed (byte* bytePointer = byteArray) { float* read = […]

Valor del puntero Constexpr

Intento declarar un puntero constexpr inicializado a un valor entero constante, pero clang frustra todos mis bashs: Intento 1: constexpr int* x = reinterpret_cast(0xFF); test.cpp:1:20: note: reinterpret_cast is not allowed in a constant expression Intento 2: constexpr int* x = (int*)0xFF; test.cpp:1:20: note: cast which performs the conversions of a reinterpret_cast is not allowed in […]

¿Qué le sucede al puntero después de eliminar?

void doSomething() { TheObject *ptr = new TheObject; delete ptr; ptr = NULL; return 0; } Déjame tomar prestadas las palabras del operador delete en cplusplus.com: Desasigna el bloque de memoria señalado por ptr (si no es nulo), liberando el espacio de almacenamiento previamente asignado a él mediante una llamada al operador nuevo y haciendo […]

¿Es posible o no la implementación de una lista vinculada sin utilizar punteros?

Mi pregunta es muy simple: ¿puede uno usar C ++, implementar una estructura de datos de listas de enlaces sin usar punteros (nodos siguientes)? Para calificar aún más mi pregunta, me refiero a que se puede crear una estructura de datos de la Lista Vinculada utilizando solo instancias de clase. Una definición de nodo común […]

¿Es una buena práctica liberar un puntero NULL en C?

Posible duplicado: ¿Libera (ptr) donde ptr es memoria corrupta NULL? Estoy escribiendo una función C que libera un puntero si era malloc() ed. El puntero puede ser NULL (en el caso de que se haya producido un error y el código no haya tenido la posibilidad de asignar nada) o asignado con malloc() . ¿Es […]