Preguntas etiquetadas con c

C es un lenguaje de programación de uso general utilizado para la programación del sistema (SO e incrustado), bibliotecas, juegos y multiplataforma. Esta etiqueta debe usarse con preguntas generales sobre el lenguaje C, como se define en el estándar ISO 9899 (la última versión, 9899: 2018, a menos que se especifique lo contrario; también etiquete las solicitudes específicas de la versión con c89, c99, c11, etc.). C es distinto de C ++ y no debe combinarse con la etiqueta C ++ en ausencia de una razón racional.


4
¿Cuál es la necesidad de llaves vacías '{}' al final de la matriz de estructuras?
Golpeé un código c en el kernel de Linux: static struct ctl_table ip_ct_sysctl_table[] = { { .procname = "ip_conntrack_max", .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, }, // ... { .procname = "ip_conntrack_log_invalid", .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &log_invalid_proto_min, .extra2 = …

4
¿Qué significa ((void (*) ()) buf) (); ¿media?
Estoy resolviendo un desafío de explotación binaria en picoCTF y encontré este código: ((void (*)())buf)(); donde bufhay una matriz de caracteres. Resolví el desafío pero parece que no puedo entender exactamente qué está haciendo. Miré este hilo pero no pude distinguirlo. Que ((void (*)())buf)();significa




2
¿Por qué las direcciones de argc y argv están separadas por 12 bytes?
Ejecuté el siguiente programa en mi computadora (Intel de 64 bits con Linux). #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", …




7
¿Por qué no puedo acceder a un puntero a puntero para una matriz de pila?
Por favor, eche un vistazo al siguiente código. Intenta pasar una matriz como a char**a una función: #include <stdio.h> #include <stdlib.h> static void printchar(char **x) { printf("Test: %c\n", (*x)[0]); } int main(int argc, char *argv[]) { char test[256]; char *test2 = malloc(256); test[0] = 'B'; test2[0] = 'A'; printchar(&test2); // …
35 c 

4
¿Es defectuoso el algoritmo strcasecmp?
Estoy tratando de reimplementar la strcasecmpfunción en C y noté lo que parece ser una inconsistencia en el proceso de comparación. Desde man strcmp La función strcmp () compara las dos cadenas s1 y s2. La configuración regional no se tiene en cuenta (para una comparación de configuración regional, consulte …
34 c  strcmp 

7
¿Cómo funciona la comparación de punteros en C? ¿Está bien comparar punteros que no apuntan a la misma matriz?
En K&R (The C Programming Language 2nd Edition) capítulo 5 leí lo siguiente: Primero, los punteros pueden compararse bajo ciertas circunstancias. Si py qpunto a los miembros de la misma matriz, entonces, como las relaciones ==, !=, <, >=, etc trabajo correctamente. Lo que parece implicar que solo se pueden …

4
¿Se copian los hilos al llamar a fork?
Si tengo un programa que se ejecuta con hilos y llamo fork()en un sistema basado en Unix, ¿se copian los hilos? Sé que la memoria virtual para el proceso actual se copia 1: 1 al nuevo proceso generado. Sé que los hilos tienen su propia pila en la memoria virtual …


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.