C中的sizeof算子

所占内存字节数 是计算机中经常使用的运算符 C或C++ .它是一个编译时一元运算符,可用于计算其操作数的大小。sizeof的结果是无符号整数类型,通常用size_t表示。sizeof可以应用于任何数据类型,包括基本类型,如整数和浮点类型、指针类型或复合数据类型,如结构、并集等。 用法 sizeof() 运算符的使用方式因操作数类型而异。

null

1. 当操作数是数据类型时。 什么时候 sizeof() 与int、float、char等数据类型一起使用,它只返回分配给该数据类型的内存量。 让我们来看一个例子:

C

#include <stdio.h>
int main()
{
printf ( "%lu" , sizeof ( char ));
printf ( "%lu" , sizeof ( int ));
printf ( "%lu" , sizeof ( float ));
printf ( "%lu" , sizeof ( double ));
return 0;
}


C++

#include <iostream>
using namespace std;
int main()
{
cout << sizeof ( char )<< "" ;
cout << sizeof ( int )<< "" ;
cout << sizeof ( float )<< "" ;
cout << sizeof ( double )<< "" ;
return 0;
}


输出:

1448

注: sizeof()可能会根据机器给出不同的输出,我们已经在32位gcc编译器上运行了我们的程序。

2. 当操作数是表达式时。 什么时候 sizeof() 与表达式一起使用,它返回表达式的大小。让我们看看例子:

C

#include <stdio.h>
int main()
{
int a = 0;
double d = 10.21;
printf ( "%lu" , sizeof (a + d));
return 0;
}


C++

#include <iostream>
using namespace std;
int main()
{
int a = 0;
double d = 10.21;
cout << sizeof (a + d));
return 0;
}


输出:

8

正如我们从第一个例子中知道的,int和double的大小分别是4和8,a是int变量,而d是双变量。最终结果将是双精度的,因此我们程序的输出是8字节。

操作员类型

sizeof()是一个编译时运算符。编译时间是指源代码转换为二进制代码的时间。它不执行()中的代码。我们来看一个例子。

C++

#include <iostream>
using namespace std;
int main() {
int y;
int x = 11;
y = sizeof (x++); //value of x doesn't change
cout<<y<< " " <<x; // prints 4 11
}


如果我们尝试增加x的值,它保持不变。这是因为,x在括号内递增,而sizeof()是编译时运算符。

需要Sizeof 1. 查找数组中的元素数。 Sizeof可用于自动计算数组的元素数。让我们看看例子:

C

#include <stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };
printf ( "Number of elements:%lu " , sizeof (arr) / sizeof (arr[0]));
return 0;
}


C++

#include <iostream>
using namespace std;
int main()
{
int arr[] = { 1, 2, 3, 4, 7, 98,
0, 12, 35, 99, 14 };
cout << "Number of elements: "
<<( sizeof (arr) / sizeof (arr[0]));
return 0;
}


输出:

Number of elements: 11

2. 动态分配一块内存 . sizeof在动态内存分配中被大量使用。例如,如果我们想要分配足够容纳10个整数的内存,而我们不知道特定机器中的sizeof(int)。我们可以在sizeof的帮助下进行分配。

C

int * ptr = ( int *) malloc (10 * sizeof ( int ));


工具书类 https://en.wikipedia.org/wiki/Sizeof 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享