
你好,sizeof()这是一个运算符,并不是一个函数,其作用是用来得到一个变量或者类型在本环境下所占用的内存字节数,这个是编译时期就已经被编译器计算出来,不会再运行时来决定,基本不会占用太大内存,也不会影响运行速度(其影响基本可以忽略)。希望能帮到你!
taobao 无忧毕设 店长 真诚为您解答,如果满意,要记得采纳哦!谢谢啦!
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,在头文件stddefh中定义。这是一个依赖于编译系统的值,一般定义为
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
1sizeof *** 作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
2sizeof是算符,strlen是函数。
3sizeof可以用类型做参数,strlen只能用char做参数,且必须是以''\0''结尾的。
sizeof还可以用函数做参数。
sizeof_百度百科
sizeof判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
用法:sizeof(类型说明符,数组名或表达式);
功能:计算数据空间的字节数
参考代码:
#include <iostream>using namespace std;
int main()
{
double (a)[3][6];
cout<<sizeof(a)<<endl; // a为指针
cout<<sizeof(a)<<endl; // a为一个有36个指针元素的数组
cout<<sizeof(a)<<endl; // a为数组一维的6个指针
cout<<sizeof(a)<<endl; // a为一维的第一个指针
cout<<sizeof(a)<<endl; // a为一个double变量
return 0;
}
/
运行结果:
4
72
24
4
8
/
1sizeof *** 作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
2sizeof是算符
3sizeof可以用类型做参数,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;
6sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为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 位
sizeof 在 C语言 中 是“运算符”,如同 +-/ 运算符,不是函数。
检查Int所占的字节数:
#include <stdioh>
#include <stdlibh>
void main()
{
int x;
x = sizeof(int);
printf("%d",x);
exit(0);
}
-------------
sizeof(); 括号里可以填类型,也可以是变量名,结构名等。
例如
int a[5];
printf("%d",sizeof(a)); // 填了数组名,测 int a[5];所占的字节数
sizeof() 是运算符,括号里是 *** 作数。
'a' 是字符常量,处理成整型值,等于 int
97 是整型常数,等于 int
'\x61' 是字符常量,处理成整型值,等于 int
'\141' 是字符常量,处理成整型值,等于 int
所以 都等于 sizeof(int), 得 4。
int main(int argc, char argv[])
{
printf("size of char is:%d\nsize of short is:%d\nsize of int is:%d\nsize of float is:%d\nsize of long is:%d\nsize of double is:%d\nsize of \"abcd\" is:%d\n",\
sizeof(char),sizeof(short),sizeof(int),sizeof(float),sizeof(long),sizeof(double),sizeof("abcd"));
system("PAUSE");
return 0;
}
以上就是关于程序多次调用sizeof()会影响运行速度吗全部的内容,包括:程序多次调用sizeof()会影响运行速度吗、c++中的sizeof是什么意思、c语言里:sizeof怎样用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)