0
How p4 is giving output 1 in this code can anyone explain this to me ?
#include<stdio.h> #define cp_d char* typedef char* cp_t; int main(){ cp_t p1,p2; cp_d p3,p4; printf("%d %d\n",sizeof(p1),sizeof(p2)); printf("%d %d\n",sizeof(p3),sizeof(p4)); return 0; }
1 Answer
+ 1
Because `cp_d` in main function is replaced by `char*` before the compilation.
The line đ
cp_d p3, p4;
Will be replaced by đbefore compilation
char* p3, p4;
which means, <p3> is a pointer, but <p4> is plain char (not a pointer).
In case of `cp_t`, both <p1> and <p2> are both defined as `char*` because `typedef` defined a type alias.