Articles of fundición

C – punteros cuando se llaman nuevas funciones

Di que tengo algo como: function2(int *hello) { //something } function1(int *hello) { function2(&hello); } void main() { int hello = 0; function1(&hello); } ¿Cómo lo hago para que function2 pueda cambiar el valor original declarado en main ?

Casting de punteros a estructuras más grandes a punteros a estructuras más pequeñas

Este post se construirá a partir de este, pero será un poco más genérico. A menudo veo punteros a estructuras grandes que se convierten en punteros a estructuras más pequeñas y me parece que funciona porque los punteros son solo la dirección del primer byte en la estructura. Lo que todavía tengo una pregunta es […]

El elenco redundante de uint8 no funciona con GCC 4.8.1

Tengo un código heredado que normalmente se comstackba para PowerPC con GCC 3.4.4. Ahora estoy portando algunas partes de código que quiero comstackr con el GCC 4.8.1 de MinGW. En algún punto del código encontré esto: // Prototypes void foo(uint8* pData); uint8 bar(); // Function void foo(uint8* pData) { (uint8) *(pData++) = bar(); // Original […]

¿Cómo leer / escribir valores de tipo de la memoria “en bruto” en C?

¿Cómo hago algo como este trabajo? void *memory = malloc(1000); //allocate a pool of memory *(memory+10) = 1; //set an integer value at byte 10 int i = *(memory+10); //read an integer value from the 10th byte

¿Qué significa * ( *) ()?

Recientemente encontré el siguiente código C: *(STRUCT_T*)(0xC6) STRUCT_T es una estructura de tipo STRUCT_T . puede alguien explicarme que significa esto? Mi conjetura: STRUCT_T* la dirección 0xC6 en un puntero de estructura y * luego recupera el valor (struct) almacenado en la dirección 0xC6 ?

Escriba cast void * (*) (void *) a void (*) (void)

Como parte de una asignación, estoy intentando crear una biblioteca de subprocesos de nivel de usuario como pthreads. Para manejar el cambio de contexto entre los hilos, estoy usando la función ‘swapcontext’. Antes de usarlo, tengo que crear un contexto utilizando la función ‘makecontext’. ‘makecontext’ espera un puntero a función con el tipo de retorno […]

Progtwigción C (Funciones puntero casting)

int eax = ((int(*)())(“\xc3 <- This returns the value of the EAX register"))(); ¿Cómo funciona esto? La cadena se convierte en puntero de función

Convertir el puntero de vacío constante a la matriz de punteros de carácter const en C

Tengo un trozo de código C que se ve así: const char (*foo)[2] = bar(); Ahora bar() es una función que devuelve a (const void *) . ¿Cómo puedo lanzar correctamente este puntero const ? El código produce esta advertencia de GCC: “initialization discards qualifiers from pointer target type”. Aquí están algunos de mis bashs […]

Para obtener un entero desde la cadena

Estoy en problemas por obtener un entero desde la cadena y usarlo. Yo tengo: char *string = “I 17 24 flying bits”; Quiero tomar 17 y 24 como números enteros y usarlos. La conversión de punteros está fuera de discusión, ¿cómo puedo obtener esos enteros y usarlos?

Casting punteros de estructura entre estructuras que contienen punteros a diferentes tipos?

Tengo una estructura, definida por lo siguiente: struct vector { (TYPE) *items; size_t nitems; }; donde tipo puede ser literalmente cualquier tipo, y tengo una estructura agnóstica de tipo similar: struct _vector_generic { void *items; size_t nitems; }; La segunda estructura se utiliza para pasar estructuras del primer tipo de cualquier tipo a una función […]