Descrição
A macro da biblioteca C offsetof(type, member-designator) resulta em um número inteiro constante do tipo size_tque é o deslocamento em bytes de um membro da estrutura desde o início da estrutura. O membro é dado por membro-designador e o nome da estrutura é fornecido em tipo.
Declaração
A seguir está a declaração da macro offsetof ().
offsetof(type, member-designator)
Parâmetros
Valor de retorno
Esta macro retorna o valor do tipo size_t que é o valor de deslocamento do membro no tipo.
Exemplo
O exemplo a seguir mostra o uso da macro offsetof ().
#include <stddef.h>
#include <stdio.h>
struct address {
char name[50];
char street[50];
int phone;
};
int main () {
printf("name offset = %d byte in address structure.\n",
offsetof(struct address, name));
printf("street offset = %d byte in address structure.\n",
offsetof(struct address, street));
printf("phone offset = %d byte in address structure.\n",
offsetof(struct address, phone));
return(0);
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
name offset = 0 byte in address structure.
street offset = 50 byte in address structure.
phone offset = 100 byte in address structure.