请解释“sizeof常用于数组,使代码可在16位机器和32位机器之间移植。”

来源:百度知道 编辑:UC知道 时间:2024/05/30 20:28:38
请解释“sizeof常用于数组,使代码可在16位机器和32位机器之间移植。”这是我昨天学c++,在书上看到的。不是很理解,也没有例子。请高手指教!

其实不止是对于数组而言。如:
ofstream fout("abc.dat", ios_base::binary);
int a[] = {1, 2, 3, 4, 5, 6};
fout.write(a, sizeof(a));
//或
//fout.write(a, sizeof(int)*6);
如果上面是针对16位的整数写为:
fout.write(a, 12); //每个整数2个字节,6个元素共12个字节。
但在32位系统上则为:
fout.write(a, 24); // 4*6
显然这样写没有移植性,用sizeof来计算系统字长则不受系统限制!

sizeof 返回的是储存数据大小
它使得程序在16位机器和32机器上运行时储存数据的大小不改变
因此便于程序在不同位的机器上运行,就是兼容

sizeof 返回的是储存数据大小 byte a;
sizeof a =1