Size of data type without using sizeof operator

Write a program to know the size of the data type without using sizeof operator.

#include <stdio.h>
#define SIZEOFBYMACRO(x) ((char*)(&x+1) - (char*)&x)
int my_sizeof(char *, char *);
int main()
{
    int i;
    char c;
    float f;
    double d;
    long double ld;
    long int l;
    long long int ll;
    printf("my_sizeof i = %d\n",my_sizeof(&i,&i+1));
    printf("my_sizeof c = %d\n", my_sizeof(&c,&c+1));
    printf("my_sizeof f = %d\n", my_sizeof(&f,&f+1));
    printf("my_sizeof d = %d\n", my_sizeof(&d,&d+1));
    printf("my_sizeof ld = %d\n", my_sizeof(&ld,&ld+1));
    printf("my_sizeof l = %d\n", my_sizeof(&l,&l+1));
    printf("my_sizeof ll = %d\n", my_sizeof(&ll,&ll+1));
    printf("Size of by Macro\n");
    printf("my_sizeof i = %d\n", SIZEOFBYMACRO(i));
    printf("my_sizeof c = %d\n", SIZEOFBYMACRO(c));
    printf("my_sizeof f = %d\n", SIZEOFBYMACRO(f));
    printf("my_sizeof d = %d\n", SIZEOFBYMACRO(d));
    printf("my_sizeof ld = %d\n", SIZEOFBYMACRO(ld));
    printf("my_sizeof l = %d\n", SIZEOFBYMACRO(l));
    printf("my_sizeof ll = %d\n", SIZEOFBYMACRO(ll));
    return 0;
}
int my_sizeof(char *p, char *q)
{
    return q - p;
}

Output

my_sizeof i = 4
my_sizeof c = 1
my_sizeof f = 4
my_sizeof d = 8
my_sizeof ld = 16
my_sizeof l = 8
my_sizeof ll = 8
Size of by Macro
my_sizeof i = 4
my_sizeof c = 1
my_sizeof f = 4
my_sizeof d = 8
my_sizeof ld = 16
my_sizeof l = 8
my_sizeof ll = 8