为什么我的64位电脑sizeof(int) *)是32而不是64?

表示数组arr中的元素个数(长度)sizeof()是一种内存容量度量函数,你这句表示用arr占用内存大小除以一个int型占用大小然后就是arr中包含的int元素的个数了。

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

(一)、sizeof的基本概念

sizeof操作符以字节形式给出了其操作数的存储大小操作数可以是一个表达式或括在括号
内的类型名。操作数的存储大小由操作数的类型决定

变量名可以不用括号括住。洳sizeof (var_name)sizeof var_name等都是正确形式。带上括号的用法更普遍建议像我们初学的小白们大家都带上括号比较好。嘻嘻!!!
注意:sizeof操作符不能用于函数類型不完全类型或位字段。不完全类型指具有未知存储大小的数据类型如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

(三)、常用类型的对齐方式

对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)

(四)、sizeof用法总结

1. 参数为数据类型或者为一般变量

例如sizeof(int)),sizeof(long)等等。这种情况要注意的是不同系统系统或者不哃编译器得到的结果可能是不同的例如int类型在16位系统中占2个字节,在32位系统中占4个字节在64位系统中占8个字节。

2. 参数為数组或指针

小秘诀:sizeof(数组名):求取的是数组的整体大小哦

&数组名:求取的是数组的整体大小哦

其他情况均为数组首元素的地址

str – 这是字符串的长度要计算的

这个函数返回字符串的长度

下面的例子显示使用strlen() 函数。

这个结构体中a成员使用一个32位整形的3位位域b用2个位,c用三个位三个成员共用一个int类型的8个位,但是他们共用一个整型长度当然是4了。

那是不是说在结构体中,不管位变量占了多少位它的sizeof值都是它所定义的类型变量的长度。就像楼下说那样
 就是不管你使用某种类型变量的位域,结构体成员的sizeof都昰该变量的sizeof大小
另外,因为编译器是为了内存寻址的效率而扩展其sizeof大小
就像
struct test
{
int a;
char b;
};
sizeof(test)肯定是8,不是因为3字节大小忽略不计而是结构大小为2的冪次方时,系统寻址效率提升。

你对这个回答的评价是

楼主可能是想让bit占用一个字节, 那么就这样定义好了

你对这个回答的评价是

我要回帖

更多关于 sizeof(int) 的文章

 

随机推荐