Machine-translated by Google. Questions are authored in English.
Top

Discussion

What is the output of this C code?

int x = 0;
void main()
{
int *const ptr = &x;
printf("%p\n", ptr);
ptr++;
printf("%p\n ", ptr);
}

 

  • A.0  1
  • B.Compile time error
  • C.0xbfd605e8   0xbfd605ec
  • D.0xbfd605e8   0xbfd605e8

Answer: B

Correct answer: Compile time error

int *const ptr declares a constant pointer to a modifiable int: the pointer itself may not be changed after initialisation. So ptr++ is an attempt to modify a const object and the compiler rejects it. Read the declaration from the name outward - const binds to what is on its left, so here it qualifies the pointer rather than the pointee.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.