sizeof用法

sizeof

sizeof常用于统计数据类型大小,如:int,double,char,float等等。但是它的统计通过一个实

验,让我有了不可思议的发现,平常我们可以用sizeof(int)来测试,int类型占用内存是不是4个byte.

对于统计字符串,感觉上是没有统计最后的‘\0‘;事实验证确实没有统计如:

char zifu[] = {W,e,i,x,i,a,n,g,f,e,i}

利用sizeof(zifu)或sizeof zifu统计第一个字符直到最后一个字符占用的总大小,具体的解释是:

sizeof统计以字符串zifu指针指向第一个字符占用空间大小开始的数组,直到遇见‘\0‘才停止;之所以

这样认为,是因为sizeof(zifu+1)的结果是2倍的sizeof zifu[0];

现有数组const int days[10] = {36,28,31,30,31,31,30,31};

int index;

现在sizeof days = 40;

sizeof (days+1) = 8;

sizeof days+1 = 41;

sizeof days[0] = 4;

sizeof days+1/days[0] = 40;

sizeof (days +1) = 8;

现在想想这个问题为什么sizeof days+1 = 41;days[0] = 4;两整型书相除不是应该为10的吗?

为什么sizeof days+1/days[0] = 40;?

时间: 2024-10-29 19:09:47

sizeof用法的相关文章

sizeof用法总结

1. 定义: sizeof是何方神圣? sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数. MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of ty

sizeof()用法总汇

sizeof()功能:计算数据空间的字节数 1.与strlen()比较       strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素.       而sizeof计算数据(包括数组.变量.类型.结构体等)所占内存空间,用字节数表示. 2.指针与静态数组的sizeof操作    指针均可看为变量类型的一种.所有指针变量的sizeof 操作结果均为4. 注意:int *p; sizeof(p)=4;  但sizeof(*p)相当于sizeof(int)

sizeof()用法汇总

sizeof()功能:计算数据空间的字节数 1.与strlen()比较       strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素.       而sizeof计算数据(包括数组.变量.类型.结构体等)所占内存空间,用字节数表示. 2.指针与静态数组的sizeof操作       指针均可看为变量类型的一种.所有指针变量的sizeof 操作结果均为4. 注意:int *p; sizeof(p)=4;                   但size

sizeof 用法部分总结

#include<iostream> #include<string.h> using namespace std; struct s1 { char a[8]; }; struct s2 { double d; }; struct s3 { s1 s; char a; }; struct s4 { s2 s; char a; }; struct s5 { int i : 8; int j : 4; int a : 3; double b; }; int main(){ int *

C 字符常量 sizeof用法

sizeof一共有3种形式(以64位编译器为例) 如何查看编译器是多少位? sizeof(void *); sizeof( 变量\常量 ) sizeof(10); // 长度为4 char c = 'a'; sizeof(c); // 长度为1 sizeof ('a') // 长度为4,字符常量在内存中占4个字节,存放的是字符的ASCII码(整型数据). C语言规定所有字符常量都作为整型量来处理. sizeof  变量\常量 sizeof 10; char c = 'a'; sizeof c;

c/c++ struct的大小以及sizeof用法

直入主题,怎么判断内存对齐规则,sizeof的结果怎么来的,请牢记以下3条原则:(在没有#pragma pack宏的情况下) 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储. 2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储.(struct a里存有s

C语言中sizeof的用法

今天同学问我sizeof可不可以计算结构体的大小,我竟然忘了C语言还有sizeof这个函数,我是多久没有写程序了啊!!!惭愧,上研究生后写嵌入式方面的程序就特别少了,看来以后还要经常来练练手才行.现在转载一篇看到的sizeof用法的文章,与大家分享(第一篇技术类的文章竟然是转载的,惭愧). #include "stdio.h" #include "string.h" #include "stdlib.h" int main() { short i

sizeof的用法

Sizeof用法 首先说明一下sizeof是c语言运算符,在编译阶段就执行了,和普通的+.-.*等一样. Sizeof有二种语法形式:1.sizeof(对象)或sizeof对象2.sizeof(类型)(可以是抽象类型也可以是一般类型) 举个例子就明白了,int i.可以用sizeof i或者sizeof(i),求得的是i这个对象所占用空间字节数,显然是4:sizeof(int),求得的是这个object类型的空间大小.比如char是1个字节. Sizeof有几种常出错用法,分别是:1,求数组大小

【好文转载c++】 sizeof 使用的经典总结

为了在人面前畅快的吹牛逼,你必须学会背后努力  -----张小二. 写在转载之前: sizeof到底是多少?本来我没有关注,只是有次室友问了我几个sizeof的问题,我被问住了,他当时问我了sizeof(a);是数组,则是数组的字节大小, 如果  void  fun(int a[],int len) {    cout<<sizeof(a)<<endl;//是多少呢,退化为指针,是32位. }   首先你看看http://blog.163.com/[email protected]