Domande taggate «c»

C è un linguaggio di programmazione generico utilizzato per la programmazione di sistemi (OS e embedded), librerie, giochi e multipiattaforma. Questo tag deve essere utilizzato con domande generali relative al linguaggio C, come definito nella norma ISO 9899 (l'ultima versione, 9899: 2018, se non diversamente specificato - anche tag richieste specifiche della versione con c89, c99, c11, ecc.). C è distinto da C ++ e non dovrebbe essere combinato con il tag C ++ in assenza di una ragione razionale.

3
Perché lanciare il valore di ritorno di free per annullare?
Sto leggendo un libro ( Programmazione con thread POSIX di Butenhof, 1997) che utilizza C, e mi sono imbattuto nella seguente riga: (void)free(data); Qui, dataè solo un puntatore a una struttura allocata, data = malloc(sizeof(my_struct_t)); Perché il risultato del freecast void? Dalla mia comprensione di C, questo non sembra avere …
82 c  casting  free  void  legacy-code 




4
Qual è la necessità di parentesi graffe vuote '{}' alla fine della matrice di strutture?
Ho colpito un po 'di codice c nel kernel di 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, …

4
Cosa fa ((void (*) ()) buf) (); significare?
Sto risolvendo una sfida di sfruttamento binario su picoCTF e mi sono imbattuto in questo pezzo di codice: ((void (*)())buf)(); dove bufè un array di caratteri. Ho risolto la sfida ma non riesco a capire esattamente cosa stia facendo. Ho guardato questo thread ma non sono riuscito a capirlo. Cosa …




2
Perché gli indirizzi di argc e argv sono separati da 12 byte?
Ho eseguito il seguente programma sul mio computer (Intel a 64 bit 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: …




7
Perché non riesco ad accedere a un puntatore a puntatore per un array di stack?
Si prega di dare un'occhiata al seguente codice. Prova a passare un array come char**a una funzione: #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
L'algoritmo strcasecmp è difettoso?
Sto cercando di reimplementare la strcasecmpfunzione in C e ho notato ciò che sembra essere un'incoerenza nel processo di confronto. A partire dal man strcmp La funzione strcmp () confronta le due stringhe s1 e s2. Le impostazioni internazionali non vengono prese in considerazione (per un confronto consapevole delle impostazioni …
34 c  strcmp 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.