Ogni tipo ha una propria grandezza espressa in bit, ad esempio il tipo intero è costituito da 32 bit (ma può cambiare anche in 16 in base all'architettura che si sta utilizzando).
Se tu devi assegnare un tipo ad una variabile che stai utilizzando per una dimensione ma non sai quanto essa possa occupare utilizzi size_t, perché se usi un tipo che non ha abbastanza "memoria" per contenere ciò che ci vai a mettere al suo interno rischi di creare un errore.
Spero di averti fatto capire il necessario, ovviamente non ho approfondito perché se sei interessato al funzionamento "a basso livello" del come funziona il tipo size_t ci sono molti manuali che lo spiegano bene.
PS: size_t può essere solo positivo e non può rappresentare numeri negativi, la differenza tra unsigned int e size_t sta nel fatto che size_t puo' contenere qualsiasi risultato la sizeof ritorni, invece unsigned int normalmente rappresenta 2^32 valori.
Se tu devi assegnare un tipo ad una variabile che stai utilizzando per una dimensione ma non sai quanto essa possa occupare utilizzi size_t, perché se usi un tipo che non ha abbastanza "memoria" per contenere ciò che ci vai a mettere al suo interno rischi di creare un errore.
Spero di averti fatto capire il necessario, ovviamente non ho approfondito perché se sei interessato al funzionamento "a basso livello" del come funziona il tipo size_t ci sono molti manuali che lo spiegano bene.
PS: size_t può essere solo positivo e non può rappresentare numeri negativi, la differenza tra unsigned int e size_t sta nel fatto che size_t puo' contenere qualsiasi risultato la sizeof ritorni, invece unsigned int normalmente rappresenta 2^32 valori.