This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

void pointer behaviour ?

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.

Parents
  • "((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;
    

Reply
  • "((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;
    

Children