Latest web development tutorials
×

C курс

C Язык учебника C Краткое введение C параметры окружающей среды C Структура программы C Базовый синтаксис C Типы данных C переменная C постоянная C Storage Class C операторы C судья C циркуляция C функция C Обзорное правила C массив C указатель C строка C структура C союз C поле Bit C typedef C Входной и Выходной C грамотность документов C препроцессор C заголовок C Слепки C Обработка ошибок C Рекурсия C Переменный параметр C Управление памятью C Параметры командной строки C Классические 100 случаев

C Стандартная библиотека

C Стандартная библиотека - справочное руководство C Стандартная библиотека - <assert.h> C Стандартная библиотека - <ctype.h> C Стандартная библиотека - <errno.h> C Стандартная библиотека - <float.h> C Стандартная библиотека - <limits.h> C Стандартная библиотека - <locale.h> C Стандартная библиотека - <math.h> C Стандартная библиотека - <setjmp.h> C Стандартная библиотека - <signal.h> C Стандартная библиотека - <stdarg.h> C Стандартная библиотека - <stddef.h> C Стандартная библиотека - <stdio.h> C Стандартная библиотека - <stdlib.h> C Стандартная библиотека - <string.h> C Стандартная библиотека - <time.h>

C библиотека макросов - offsetof ()

C стандартная библиотека - <stddef.h> C стандартная библиотека - <stddef.h>

описание

C библиотека макросовoffsetof (типа, член-целеуказателем) будет генерировать постоянное число типа size_t,который является структурным членом структуры по отношению к началу смещения байта. Член с членом-целеуказателем, было в названии типа структуры приведен.

заявление

Вот offsetof () макро заявлении.

offsetof(type, member-designator)

параметры

  • тип - это тип класса, в котором, член-указатель является действительным членом индикатора.
  • член-указатель - который является членом индикатора типа класса.

Возвращаемое значение

Этот макрос возвращает значение типаsize_t, показывающий тип смещения членов.

примеров

Следующий пример демонстрирует offsetof () использования макроса.

#include <stddef.h>
#include <stdio.h>

struct address {
   char name[50];
   char street[50];
   int phone;
};
   
int main()
{
   printf("address 结构中的 name 偏移 = %d 字节。\n",
   offsetof(struct address, name));
   
   printf("address 结构中的 street 偏移 = %d 字节。\n",
   offsetof(struct address, street));
   
   printf("address 结构中的 phone 偏移 = %d 字节。\n",
   offsetof(struct address, phone));

   return(0);
} 

Давайте скомпилировать и запустить эту программу, которая приведет к следующему:

address 结构中的 name 偏移 = 0 字节。
address 结构中的 street 偏移 = 50 字节。
address 结构中的 phone 偏移 = 100 字节。

C стандартная библиотека - <stddef.h> C стандартная библиотека - <stddef.h>