Articles of vacio

Problemas al cambiar un valor de puntero nulo en C

Básicamente, mi problema es que estoy tratando de cambiar el valor dentro de la variable valor , de modo que después de llamar a la función cambiar_valor, cambie a 25. Pero mi problema es que no cambia en absoluto. ¿Qué estoy haciendo mal aquí?. Estoy tratando de hacer una función realmente genérica para que, según […]

Uso de (aparentemente) función C vacía

¿Alguien puede comentar sobre el punto de la siguiente función, que parece no hacer mucho: // Returns stored values int getDetails(const int param1[], int* param2, int* param3, int* param4) { (void)param1; (void)param2; (void)param3; (void)param4; return 0; } El comentario está realmente allí con el código. Estoy pensando que debe ser una especie de colilla extraña, […]

¿C tiene un tipo genérico de “puntero a puntero”?

Por ejemplo, si quisiera escribir un “libre” que anulara el puntero, podría escribir algo como: void myfree(void **data) { free(*data); *data = NULL; } sin embargo, cuando trato de escribir esto, recibo una advertencia del comstackdor (de gcc 4.6.2) que dice: warning: passing argument 1 of ‘myfree’ from incompatible pointer type [enabled by default] … […]

¿Qué tan peligroso es la conversión de void ** a char **

Así que sabemos que el estándar no obliga a que los tamaños de puntero sean iguales. ( aquí y aquí ) (y no hablamos de punteros de función) Me preguntaba cómo en realidad eso puede ser un problema. Sabemos que void * puede contener cualquier cosa, por lo que si los tamaños de puntero son […]

¿Es nulo ** un tipo aceptable en ANSI-C?

He visto una función cuyo prototipo es: int myfunc(void** ppt) Esta función se llama en un archivo C como a = myfunc (mystruct ** var1); Donde mystruct es typedef para una de las estructuras que tenemos. Esto funciona sin errores de comstackción en MSVC6.0, pero cuando lo compilo con algún otro comstackdor de C, da […]

Hacia la comprensión de los punteros al vacío.

En mi respuesta , menciono que desreferenciar un indicador de void es una mala idea. Sin embargo, ¿qué pasa cuando hago esto? #include int main (void) { void* c = malloc(4); *c; &c[0]; } Comstackcion: gcc prog.c -Wall -Wextra prog.c: In function ‘main’: prog.c:4:2: warning: dereferencing ‘void *’ pointer *c; ^~ prog.c:5:4: warning: dereferencing ‘void […]

¿Cómo convertir puntero vacío en puntero char en C

Ok, esto se ha vuelto tan confuso para mí. Simplemente no sé qué está mal con esta tarea: void *pa; void *pb; char *ptemp; char *ptemp2; ptemp = (char *)pa; ptemp2 = (char *)pb; ¿Alguien puede decirme por qué estoy recibiendo este error: error: conversión no válida de ‘void *’ a ‘char *’

¿Qué hace, o hizo, la “función de vacío volátil (…)”?

He visto ¿Cuántos usos tiene la palabra clave “volátil” en la función C ++, desde la perspectiva de la gramática? sobre el uso de la palabra clave volátil en las funciones, pero no hubo una explicación clara de lo que hizo el Caso 1 de esa pregunta. Solo una statement de uno de los encuestados […]

Si tengo un indicador de vacío, ¿cómo puedo poner un int en él?

Tengo una matriz de valores arbitrarios, por lo que la he definido como una matriz de punteros vacíos, por lo que puedo señalar cualquier tipo de información (como int , matrices de caracteres, etc.). Sin embargo, ¿cómo le asigno realmente un int ? Tomemos, por ejemplo, estas inicializaciones: void* data[10]; int x = 100; Mi […]

¿Cuándo se prefiere uintptr_t sobre intptr_t?

Dado el requisito de que necesito almacenar el valor de un puntero “genérico” en una estructura y no tengo ningún interés en la memoria apuntada, me parece más semánticamente correcto almacenarlo como un intptr_t que un void* . La pregunta es si un uintptr_t es más adecuado o no, y ¿cuándo se prefiere uno sobre […]