#define int int*
will replace int *p, q
as int* *p, q
. So Here p
is double pointer to int
and q
is of type int
.
For example consider the below program of your same logic in char
#include<stdio.h>
#define char char*
main()
{
char *p,q;
printf("%d, %d\n", sizeof(p), sizeof(q));
}
Output is
4, 1
p=(int *)5;
– This statement also will be replaced like p=(int* *)5;
by preporcessor. So its not throwing any warning.
so now printf("%d",q+p);
will gives you 45
in case of 32 bit machine or 85
incase of 64 bit machine.
solved Assigning/Casting integers to pointers