c/c++ 中任意类型的指针的大小一定等于sizeof(void*)吗?
前几天看到一个帖子,说C++只规定了char 类型的大小为一字节,而其它类型的大小是由具体的编译器决定的。
那么,任意一个类型的指针(除了成员指针)的大小是否一定与sizeof (void*) 相等呢?
我在网上搜了一下,似乎不能保证它们的大小一定相等。
如果不相同,不妨设在某个编译器上sizeof( int* )=8; 而sizeof(void*)=4
那么对于下列语句:
int a;
void *vp = &a;
vp保存的将是截断后的a的地址,而不是a的完整地址,而c/c++中而很多库函数的参数是void*类型的,如memset函数,如果不能保证任意一个类型的指针(除了成员指针)的大小与sizeof (void*) 相等,这些函数将不能正确执行。
因此,我推测 c/c++中任意一个类型的指针(除了成员指针)的大小一定与sizeof (void*) 相等。
由于没有读过c/c++标准文档,不知道里面是怎么规定的。