paulo1205
(usa Ubuntu)
Enviado em 26/11/2021 - 19:39h
LucasTAraujo escreveu:
Primeiramente recomendo fortemente que você leia a documentação da linguagem para obter uma descrição técnica e completa , "Segundamente" seria legal se desse mais detalhes, por exemplo qual linguagem está se referindo, sei que está na categoria, mas não custa explicitar ;).
Agora vamos para resposta: size_t é um tipo básico de dados, sendo mais especifico um inteiro sem sinal, seus valores extremos normalmente variam entre [0,UINT_MAX], onde UINT_MAX é uma constante com o maior valor que um unsigned int pode armazenar, esse valor pode variar em diferentes compiladores ou arquiteturas. O size_t é o tipo de retorno de algumas funções como sizeof, mas também pode ser utilizado como qualquer outro tipo de dados, eu particularmente já o vi em contadores de laço de repetição e variáveis auxiliares para salvar posições de vetores/matrizes.
Essa informação é incorreta. Não há necessariamente ligação entre
size_t, que é definido em <stddef.h>, e
unsigned int ou com o valor constante
UNIT_MAX (em <limits.h>). O padrão diz que
size_t é de um tipo inteiro sem sinal, sem especificar qual tipo é esse para além de dizer que é o mesmo tipo de um valor devolvido pelo operador
sizeof — pode ser
unsigned int[b], mas também pode ser [b]unsigned long ou
unsigned long long.
A simples existência do nome
size_t é para livrar o programador de ter de saber qual a representação interna de dados desse tipo, que, no entanto, serve para representar o tamanho de qualquer objeto que o programa em C possa dispor (ou encontrar disposto) na memória. E essa existência encontra correspondentes em algumas funções da biblioteca padrão, tais como, por exemplo, o o modificador
z na hora de imprimir ou ler um valor do tipo
size_t com
printf() e
scanf().
// Exemplo 1: escrita.
printf("Tamanho de um valor inteiro: %zu bytes.\n", sizeof (int));
// Exemplo 2: leitura.
size_t s;
char *buffer;
printf("Quantos bytes deseja alocar para o buffer? ");
if(scanf("%zu", &s)!=1){
fputs("Erro de leitura.\n", stderr);
abort();
}
buffer=malloc(s);
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)