Unfortunately Meetee you are not quite right.
The question to ask is what is the type of "" and what is the type of NULL.
Let's start with NULL it is easier. NULL is defined in C++ to 0 which is where I assume you got it as equivalent to int. That would be correct for C++ but this is a C program, note use of printf and headers.
In C NULL is normally defined to ((void*)0), that is 0 cast to a void pointer. This works in C because C will automatically convert a void pointer to any other pointer type. C++ wont do this which is why it uses plan 0.
So for this program sizeof(NULL) == sizeof(void *) which for a 32 bit system might very well also be sizeof(int).
Onto "". So what is "", it is a string constant, that means it is an array of characters to which the compiler automatically adds a zero terminator '\0', something like
-
[const] char __Name__[1] = { '\0' };
-
Note that the const is a bit platform dependent but generally it is best practice to assume it is there.
What type would __Name__? The name of an array variable...
char * of course as any other array variable name used in isolation.
so sizeof("") == sizeof(char*) not sizeof(char).