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

Discussion

What is the output of this C code?

#include <stdio.h>
    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, so ptr itself may not be reassigned and ptr++ is rejected.

Contrast const int *ptr, where the const protects the pointed-to value and the pointer may still be moved. The position of the qualifier relative to the * decides which is fixed, and reading from the identifier outwards makes it clear: ptr is a const pointer to int.

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

Post your comment

Please log in or register to post a comment.