c++中的sizeof是什么意思 C++中sizeof(T)=sizeof(double)是什...

作者&投稿:闳冒 (若有异议请与网页底部的电邮联系)

sizeof()是C/C++中的一个操作符,其作用就是返回一个对象或者类型所占的内存字节数。

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 type size_t.

其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为

typedef unsigned int size_t;   

在C99及以上标准中,sizeof(char)、sizeof(int)、sizeof(long)、sizeof(long long)、sizeof(float)、sizeof(double)、sizeof(long double)的值分别是1,4,4,8,4,8,16。

拓展资料:sizeof与strlen区别

strlen(char*)函数求的是字符串的实际长度,直到遇到第一个'\0',然后就返回计数值,且不包括'\0'。

char aa[10];cout<<strlen(aa)<<endl; //结果是不定的,因为未初始化,'\0'在内存中的位置不确定

char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0

char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3

而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。

sizeof(aa) 返回10 int a[10]; sizeof(a) 返回40

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

2.sizeof是算符,strlen是函数。

3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。

sizeof还可以用函数做参数。

sizeof_百度百科



一、sizeof的概念 
  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 

二、sizeof的使用方法 

  1、用于数据类型 
  sizeof使用形式:sizeof(type) 
  数据类型必须用括号括住。如sizeof(int)。 

  2、用于变量 
  sizeof使用形式:sizeof(var_name)或sizeof var_name 
  变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。 

  注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。 
  如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式。 

三、sizeof的结果 
  sizeof操作符的结果类型是size_t,它在头文件
中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 

  1、若操作数具有类型char、unsigned char或signed char,其结果等于1。 
  ANSI C正式规定字符类型为1字节。 
 
 2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、

float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、
4、4、4、8、10。 
  3、当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。 
  4、当操作数具有数组类型时,其结果是数组的总字节数。 
  5、联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数,包括任何垫补在内。 
  让我们看如下结构: 
  struct {char b; double x;} a; 
  在某些机器上sizeof(a)=12,而一般sizeof(char)+ sizeof(double)=9。 
  这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐。如double类型的结构成员x要放在被4整除的地址。 
  6、如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。 
四、sizeof与其他操作符的关系 
  sizeof的优先级为2级,比/、%等3级运算符优先级高。它可以与其他操作符一起组成表达式。如i*sizeof(int);其中i为int类型变量。 
五、sizeof的主要用途 
  1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如: 
  void *malloc(size_t size), 
  size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。 
  2、sizeof的另一个的主要用途是计算数组中元素的个数。例如: 
  void * memset(void * s,int c,sizeof(s))。 
六、建议 
  由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用sizeof来代替常量计算。

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。

2.sizeof是算符

3.sizeof可以用类型做参数,sizeof还可以用函数做参数,比如:
short f();
printf("%d\n", sizeof(f()));
输出的结果是sizeof(short),即2。

4.数组做sizeof的参数不退化。

5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
6.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

7.当适用了于一个结构类型时或变量, sizeof 返回实际的大小,
当适用一静态地空间数组, sizeof 归还全部数组的尺寸。
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸

char str[20]="0123456789";
int b=sizeof(str); //b=20; >>>> sizeof 计算的则是分配的数组

char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是长整型的,所以是4
sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占了 1 位

size 大小的意思,of什么的大小。顾名思义,就是返回一个参数的大小。
例如
int a[20];
cout<<sizeof(a);
你试试就知道了:)

楼上你的例子中 sizeof(a) 是对指针做的,只会返回指针的大小 也就是4。要返回数组大小应该使用 sizeof(a[])。

在C++中sizeof代表什么?怎么用?~

取你传进参数所占的空间大小

第一个是输出T对象所占用大小 第二个输出double类型所占的内存字节数

sizeof在c语言中是什么意思
答:调用sizeof时,可以使用变量名或者某种类型的数据(如int),而它会返回以字节为单位的大小。例如,如果你使用sizeof(int),它会返回4,表示int类型的变量占4个字节。sizeof在C语言中也可以用于求数组的大小,例如intarray,如果使用sizeof(array)将返回10×sizeof(int),表示数组大小为10×4个...

C语言中sizeof是什么意思
答:使用形式:sizeof(type)。其中type如int、double等。例如sizeof(int)、sizeof(char*)、sizeof(double)。这个时候sizeof后面的类型必须用括号()包起来,不包起来是错误的,通过不了编译。其中sizeof(void*)在64位下是8,而sizeof(void)是1。其实,在C语言中sizeof(函数),如sizeof(...

C语言中的sizeof和length怎么区别?
答:sizeof是变量占用内存空间的大小,是字节数。length是数组变量的元素个数,是个数,每一个不一定刚好一个字节。

C++中sizeof(float)是什么意思?
答:sizeof是C语言的一种单目操作符。一、sizeof的概念,sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。二、sizeof的使用方法 1、...

c语言中sizeof什么意思
答:sizeof 不是函数copy名,而是运算符。计算 变量类型百,或某一变量占内存度 大小 的字节数。例如 int 型,知double 型,struct 型,简道单变量名,数组名 :include <stdio.h> struct AA{ char name[80];int v[10];double d[2];};int main(){ int i = 102;double v=18.00;struct AA...

c语言中sizeof是什么意思
答:用来获得某类型的数据所占字节数

C语言中,sizeof返回值代表什么意思?
答:sizeof中的++i 的副作用并没有显示出来,原因只可能有一个,在编译的时候sizeof执行以后将++i处理了,++i的副作用因此被消除了。如果sizeof 是在运行时进行的话,则肯定要注意++i 。实际上sizeof的实现应该是用宏来做的,宏在编译时进行执行。具体实现可以参考下面。2.sizeof('a')在C语言中的...

c语言程序里sizeof是什么意思
答:在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。在Pascal 语言与C语言中,对 sizeof() 的处理都是在编译阶段进行。

c语言中,sizeof是什么意思
答:sizeof() 是一个获取数据类型或者表达式长度的运算符 例如:sizeof(int)就是获取int型的长度,所以值为4,即int型占4字节内存

C语言中sizeof和strlen函式区别在哪?
答:由于在编译时计算,因此sizeof不能用来返回动态分配的记忆体空间的大小。实际上,用sizeof来返回型别以及静态分配的物件、结构或阵列所占的空间,返回值跟物件、结构、阵列所储存的内容没有关系。 具体而言,当引数分别如下时,sizeof返回的值表示的含义如下: 阵列——编译时分配的阵列空间大小; ...