Articles of sizeof

C: sizeof single struct member

Sto cercando di dichiarare una struttura che dipende da un’altra struttura. Voglio usare sizeof per essere sicuro / pedante. typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; Ora voglio dichiarare una struct child_t che ha le stesse dimensioni di parent_t.text . Come posso fare questo? (Pseudo-codice sotto.) […]

Cosa decide la dimensione di un intero?

sizeof(int) mostra 4 sul mio Dev Cpp anche se è in esecuzione su una macchina a 64 bit. Perché non considera invece l’HW sottostante e lo spettacolo 8? Inoltre, se la compilazione dell’ambiente cambia anche a 64 bit (un 64 bit compiler a 64 bit compiler ha senso, in primo luogo ?!), allora la dimensione […]

Perché è (sizeof (int)> -1) falso?

Puoi giustificare il seguente codice: #include int main() { if(sizeof(int) > -1) { printf(“\nTrue\n”); } else { printf(“\nFALSE\n”); } } L’output è FALSE ….. suggeriscimi il motivo

C – Puntatori SizeOf

char c[] = {‘a’,’b’,’c’}; int* p = &c[0]; printf(“%i\n”, sizeof(*p)); //Prints out 4 printf(“%i\n”, sizeof(*c)); //Prints out 1 Sono estremamente confuso su questa sezione di codice. Entrambi p e c rappresentano l’indirizzo dell’array c al 0 ° indice. Ma perché sizeof (* p) stampa 4? Non dovrebbe essere 1?

Ottenere la dimensione di un malloc solo con il puntatore restituito

Voglio essere in grado di variare le dimensioni del mio array così ne creo uno in questo modo: int* array; array = malloc(sizeof(int)*10);//10 integer elements Posso usare questo come un array come faresti normalmente, tuttavia quando provo a trovarne la dimensione in questo modo: size = sizeof(array)/sizeof(int); Ottengo la risposta 1 perché non lo riconosce […]

C -> sizeof string è sempre 8

#include “usefunc.h” //don’t worry about this -> lib I wrote int main() { int i; string given[4000], longest = “a”; //declared new typdef. equivalent to 2D char array given[0] = “a”; printf(“Please enter words separated by RETs…\n”); for (i = 1; i sizeof(longest)) { longest = given[i]; } */ printf(“%lu\n”, sizeof(given[i])); //this ALWAYS RETURNS EIGHT!!! […]

C puntatori e matrici / operatore ‘sizeof’

Possibile duplicato: differenza del puntatore allo stack per il puntatore char e l’array Per illustrare la mia domanda: 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; } Prima di tutto, la mia ipotesi è corretta? E supponendo che […]

Lungo 3 byte int e 5 byte lungo?

Ognuno degli standard C e C ++ consente che la dimensione dei tipi numerici non sia una potenza di due? I seguenti vincoli sono noti: 16 <= CHAR_BIT * sizeof(int) <= CHAR_BIT * sizeof(long) 32 <= CHAR_BIT * sizeof(long) <= CHAR_BIT * sizeof(long long) e una dozzina di altri, che su una tipica architettura a […]

Determinare in modo affidabile il numero di elementi in una matrice

Ogni programmatore C può determinare il numero di elementi in un array con questa macro nota: #define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) Ecco un tipico caso d’uso: int numbers[] = {2, 3, 5, 7, 11, 13, 17, 19}; printf(“%lu\n”, NUM_ELEMS(numbers)); // 8, as expected Tuttavia, nulla impedisce al programmatore di passare accidentalmente un puntatore anziché un array: […]

Utilizzo di sizeof () sulla memoria di malloc’d

Possibile duplicato: domande newbie su malloc e sizeof Sto cercando di leggere le stringhe in un programma. Quando ho notato che le stringhe erano a volte corrotte, ho provato il seguente codice: void *mallocated = malloc(100); printf(“sizeof(mallocated) = %d\n”, sizeof(mallocated)); Secondo il mio programma, la dimensione di mallocated era 8 , anche se ho assegnato […]