void *p用sizeof为什么测不出长度来呢?

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:31:03
原来记得void *p似乎是可以指向任意一个类型(不知道有没有记错)

但是不知道为什么 用sizeof却测不出它的长度 请高人指教为什么
#include <iostream>
using namespace std;

int main()
{
void *p;
cout<<sizeof(*p);
return 0;
}

程序如下

在32位机器中,一个指针的长度是4个字节,但是sizeof *p是求指针指向的数据的长度大小,这里你设置为VOID空类型,自然无法获取长度;
所谓VOID可以指向任何类型,是因为在赋值时可以进行一个强制类型转换

在32位机器中,一个指针的长度是4个字节,但是sizeof *p是求指针指向的数据的长度大小,这里你设置为VOID空类型,自然无法获取长度;
所谓VOID可以指向任何类型,是因为在赋值时可以进行一个强制类型转换
在32位机下,sizeof(int)*p是 4乘以p
sizeof(p) = sizeof(int*) = 4,是说指针占用几个字节
sizeof(*p) = sizeof(int) = 4,是说整型数占用几个字节

在32位机器中,一个指针的长度是4个字节,但是sizeof *p是求指针指向的数据的长度大小,这里你设置为VOID空类型,自然无法获取长度;
所谓VOID可以指向任何类型,是因为在赋值时可以进行一个强制类型转换

#include <stdio.h>

void main()
{
printf("%d\n", sizeof(void *));
}

是4么

意思就是这个指针类型大小是4

而至于这个指针指向的数据大小就不得而知了

,间谍飞哥一个非常热共同此人发言

在32位机器中,一个指针的长度是4个字节,但是sizeof *p是求指针指向的数据的长度大小,这里你设置为VOID空类型,自然无法获取长度;
所谓VOID可以指向任何类型,是因为在赋值时可以进行一个强制类型转换
来自