Вот мой код, почему размер структуры отличается от размера указателя структуры
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct flx
{
int age;
int id;
char name[];
}*s;
int main()
{
char name[50]="Hi how are you";
s=malloc(sizeof(s)+sizeof(char)*strlen(name));
s->id=12345;
s->age=16;
strcpy((*s).name,name);
printf("Id --- %d\nName --- %s\n age --- %d",s->id,s->name,s->age);
printf("\nTotal Sizeof *s is %d \nSize of s is
%d",sizeof(*s),sizeof(s));
return 0;
}
output:(In code::blocks)
Id --- 12345
Name --- Hi how are you
age --- 16
Total Sizeof *s is 8
Size of s is 4
Process returned 0 (0x0) execution time : 0.473 s
Press any key to continue.
1) В приведенном выше коде общий размер структуры равен 8, а размер указателя равен 4, поэтому?2) Но когда я компилирую следующий код
#include<stdio.h>
int main()
{
int *b;
printf("sizeof b is %d\nSize of *b is %d",sizeof(b),sizeof(*b));
}
В выводе отображается
sizeof b is 4
Size of *b is 4
Process returned 0 (0x0) execution time : 0.475 s
Press any key to continue.
, так почему sizeof struct показывает другой размер и какова причина показывать это "Размер sэто 4 "?