天天看點

實作 sizeof實作 sizeof

實作 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(): 
           

繼續閱讀