【发布时间】:2020-06-27 08:30:35
【问题描述】:
如果指针ptr的地址是2000,那么下面程序的输出是什么? [关于 32 位编译器。] (2)
#include <stdio.h>
int main()
{
void *ptr;
++ptr;
printf("%u",ptr);
return 0;
}
【问题讨论】:
-
你试过了吗?你运行这个代码sn-p了吗? [提示]你在运行这个程序时遇到了什么问题?
-
如何将指针的初始值设置为 2000。在在线编译器上尝试过,结果为 1
-
++ptr是不是一个有效的声明,ptr是一个void指针? -
有两个具体的错误,MSVC 编译器指出了它们。第三个没有被指出。 a)
void*的大小未知,b) 格式说明符不正确,c) 递增未初始化的变量。 -
@alk 这是真的,我应该说
void。因为编译器不知道void的大小,所以它不知道要在指针的值(地址)上增加多少。如果 OP 指定char*,它将添加1。如果 OP 指定double*,它将添加 8,sizeof (double)。
标签: c void-pointers