Hi, I observed a strange behaviour (for me only) of void pointer. I wrote a code to access an integer through void pointer as below:
void *ptr; int a[2] = {1,2};
ptr = (int *)&a; ptr++; // This is giving error: Unknown Size
Why the above increment statement is giving error as i already cast the pointer to int type ?
Can anybody help me in understanding this ?
Karthik K.
"((int *)ptr)++;
warning: #1441-D: nonstandard cast on lvalue
Is that ok?"
Although some compilers accept it, it's really an error because the postfix increment operator requires a modifiable lvalue and a cast does not yield an lvalue.
What does work on all compilers is:
ptr = ((int *)ptr) + 1;
Thats absolutely true ..!!