这是在采访中被要求预测输出的程序
main()
{
char **p = 0;
printf("%d\n", ++p);
}
你能告诉我为什么答案4在这里?
答案 0 :(得分:1)
char占用1个字节,但指向该char的指针占用4个字节(int32)。所以,p
实际上是指向int的指针。当您递增指针时,它会向前移动基础数据类型的字节数。因此,p
向前移动4个字节。
答案 1 :(得分:0)
char
的大小是一个字节,但指针的大小(32位代码)是四个字节。双指针意味着您将指向四个字节的数量,因此
p ++
将指针前进到四个字节(据称是下一个char *
),因此printf
的输出为4.