實作 sizeof
思路: 用指針表示位址,然後相減
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define sizeof_v(var) ((size_t) ((char *)(&(var) + 1) - (char *)&(var)))
#define sizeof_t(type) ((size_t) ((type *)0 + 1))
typedef struct
{
int age;
char name[];
}STU_T;
int main()
{
char c;
int i=;
printf("mysizeof(): %d\n",sizeof_v(c));
printf("mysizeof(): %d\n",sizeof_v(i));
printf("mysizeof(): %d\n",sizeof_t(char));
printf("mysizeof(): %d\n",sizeof_t(int));
printf("mysizeof(): %d\n",sizeof_t(STU_T));
return ;
}
[liboyang@database74 test]$ ./a.out
mysizeof():
mysizeof():
mysizeof():
mysizeof():
mysizeof():