Я учусь работать с struct
s в C и написал следующий пример:
#include <stdio.h>
#include <stdlib.h>
struct s1{
unsigned short member;
};
int main()
{
struct s1 *s1_ptr = malloc(sizeof(*s1_ptr));
s1_ptr -> member = 10;
printf("Member = %d\n", *s1_ptr); // Member = 10
}
ВОПРОС: Гарантируется ли, чтово всех случаях указатель на структуру является точно таким же указателем на его первый элемент?
В этом конкретном случае он работает, как я ожидал, но я не уверен, гарантируется ли это.Есть ли у компилятора возможность вставлять некоторые отступы в самом начале?
Единственное, что я смог найти в макете типа структуры, это Section 6.2.5 Types
из N1570 :
Тип структуры описывает последовательно распределенный непустой набор объектов-членов (и, при определенных обстоятельствах, неполный массив), каждый из которых имеет необязательно указанное имя и, возможно, отдельный тип.
Но естьничего о заполнении здесь.