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

Discussion

What is the output of this C code?

#include <stdio.h>
    void main()
    {
        int x = 0;
        int *ptr = &x;
        printf("%p\n", ptr);
        ptr++;
        printf("%p\n ", ptr);
    }

 

  • A.0xbfd605e8 0xbfd605ec
  • B.0xbfd605e8 0cbfd60520
  • C.0xbfd605e8 0xbfd605e9
  • D.Run time error

Answer: A

Correct answer: 0xbfd605e8 0xbfd605ec

Pointer arithmetic is in units of the pointed-to type, so ptr++ advances by sizeof(int) - four bytes on a typical platform. The address rises from ...e8 to ...ec.

The distractor ending e9 assumes a step of one byte, which would be right only for a char *. The particular addresses are arbitrary and vary between runs; what the question tests is the size of the step, which follows from the type.

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

Post your comment

Please log in or register to post a comment.