增加C

时间:2016-11-17 02:56:02

标签: c

这是在采访中被要求预测输出的程序

  main()
  {
     char **p = 0;
     printf("%d\n", ++p);
  }

你能告诉我为什么答案4在这里?

2 个答案:

答案 0 :(得分:1)

char占用1个字节,但指向该char的指针占用4个字节(int32)。所以,p实际上是指向int的指针。当您递增指针时,它会向前移动基础数据类型的字节数。因此,p向前移动4个字节。

答案 1 :(得分:0)

char的大小是一个字节,但指针的大小(32位代码)是四个字节。双指针意味着您将指向四个字节的数量,因此

p ++

将指针前进到四个字节(据称是下一个char *),因此printf的输出为4.