永发信息网

如下sizeof(p)不懂什么意思,为什么值是8?

答案:2  悬赏:40  手机版
解决时间 2021-03-19 23:14
  • 提问者网友:饥饿走向夜
  • 2021-03-18 23:56
#include
using namespace std;
union p{
char i;
short j;
int k;
long l;
float f;
double d;
};
int main()
{
cout< p x;
x.d=12.444;
cout< x.i='a';
cout< x.f=2.222;
cout<}
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-03-19 00:32
注意用sizeof计算字节长度时联合体(union)与结构体(struct)的区别,联合体的字节长度是其内部数据类型字节最大的一个(例如你的这个问题:最长的是double型,8个字节),而结构体是其内部所有数据类型所占字节数的总和,但是也有内存对齐的问题,希望可以帮到你!
全部回答
  • 1楼网友:话散在刀尖上
  • 2021-03-19 00:39
sizeof(float)的结果是4,这句的意思是求float类型所占用的内存大小,单位是字节。括号里面的参数可以是数据的类型,也可以是具体的变量。如:int b=sizeof(int);或者是int a=2;int b=sizeof(a);其结果都是b=2。*p是一个指针,如:int *p;//定义了一个指向整型数据的指针变量;为其赋值的方法如下:int *p;//定义指针变量 int a=2;//定义一个整型变量 *p=a;//为指针赋值(或者是p=&a;&a是取a的内存地址) *p+3等同于a+3。在这里p的类型是指针,其实际值是整型数据,这个数据是内存里的一个地址。int *p中的int指的是p将指向一个整型变量。需要注意的是,指针类型的指向的数据类型不能出错,否则出错,如:char c='s'; int *p=c;这是错误的,原因就在于把字符型变量的地址赋给了指向整型变量的指针
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯