大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C语言中的sizeof是一个很有意思的关键字,经常有人用不对,搞不清不是什么。我以前也有用错的时候,现在写一写,也算是提醒一下自己吧。反正现在来看,还在搞sizeof是什么意思,怎么用正确,还是有点搞笑,都经常用的东西,没有理解透彻,就差的太远了。
创新互联公司专注于中大型企业的成都做网站、成都网站设计和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户成百上千,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注高端网站设计和互联网程序开发,在前进的路上,与客户一起成长!
一 sizeof是什么
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等,sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。这个操作数不好理解对吧?后面慢慢看就明白了。sizeof的返回值是size_t,在64位机器下,被定义为long unsigned int。
二 sizeof如何使用
1、用于数据类型
使用形式: sizeof(type)。其中type如int 、double等。 例如sizeof(int)、sizeof(char*)、sizeof(double)。这个时候sizeof后面的类型必须用括号()包起来,不包起来是错误的,通过不了编译。其中sizeof(void*)在64位下是8,而sizeof(void)是1。其实,在C语言中sizeof(函数),
如sizeof(main),结果也是1。但是在C++中,sizeof(void)和sizeof(函数)都是非法的,通过不了编译,后面C++就不说了,现在讲C嘛。其实sizeof(函数),sizeof(void)虽然是1,但是是不正确的使用方式。
2、用于变量
使用形式: sizeof(var)或sizeof var。当操作基本数据类型的时候,在我64位电脑的结果如下
作用是:计算常量、变量、数据类型 在内存中占用的字节数
三、用sizeof计算常量在内存中占用的字节数
sizeof(1) 计算常量 1 在内存中占用的字节数 4
1 默认的事一个10进制的整数(int) 4
sizeof(2.3f); 计算 float类型的常量在内存中占用的字节数 4
sizeof(2.3); 计算 double 类型的常量在内存中占用的字节数 8
sizeof('a'); 计算 'a' 字符常量 在内存中占用的字节数 1 4?
EOF是end of file 的简写, 如读到文件末尾,则函数返回一个 EOF值,它是一个宏定义,一般值是-1。使用示例如下:
#include stdio.h
int main()
{
char c;
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}
说明:在Windows上按CTRL+Z键,表示EOF。
注意:EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。
(1)遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+D,就可以跳出getchar(),去执行程序的其他部分;
(2)在前面输入的字符为换行符时,接着输入Ctrl+D;
(3)在前面有字符输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到文件结束符的功能。
sizeof()用来测给定的数据类型在内存中占的字节长度;
比如我想知道int类型变量占几个字节 就这样使用:len = sizeof(int) 就可以了,len就是int型变量在内存中字节数;
当然你也可以这么用 int a; len = sizeof(a); 编译器会知道a是int型变量的,会自动换成sizeof(int);
另外 自己定义的数据类型也可以用sizeof来求字节数,比如定义了一个类class A{...},然后你
这样用:len = sizeof(A),就能知道A占了几个字节;
最后,提示下,sizeof是关键字或者说是运算符,不是函数,它的结果是编译的时候就确定了的,没有函数调用;
1、首先打开VS,新建一个 使用sizeof求出数组的大小 project。
2、接着在左侧文件树添加一个 sizeof.c 源文件。
3、其里面有stdio.h和stdlib.h头文件,也可自己输入。
4、然后输入main函数主体及返回值。
5、定义一个数组,使用sizeof计算出数组的大小。
6、最后编译运行程序,便能输出数组的大小。
1、用法:
strlen(char*
pstr);//求的是字符串的实际长度
sizeof(类型说明符,数组名或表达式)
或sizeof
(
变量名)
比如说有以下数据类型:int
arr[10]
,a;
char
*str="hello
world";
sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、区别:
2.1
sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
2.2
strlen()求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
总结的说来sizeof的适用范围更广,但是在返回实际的字符数组中的数据是,strlen()更方便,因为它返回的是实际的字符串长度,而sizeof是返回数组大小。