c语言sizeof函数

c语言sizeof函数,第1张

(1)sizeof不是函数,它只是一个 *** 作符(operator)。

(2)sizeof的作用是返回一个对象或者类型所占的内存字节数,它的返回值的类型是size_t类型,而size_t是在头文件stddef.h中定义的。size_t 这是一个依赖于编译系统的值,一般定义为

「typedef unsigned int size_t」,也就是无符号整型。

(3)sizeof有三种语法形式,如下:

1) sizeof( object )// sizeof( 对象 )

2) sizeof( type_name )// sizeof( 类型 )

3) sizeof object// sizeof 对象

所以,

int i

sizeof( i ) // ok

sizeof i // ok

sizeof( int ) // ok

sizeof int // error

既然写法3可以用写法1代替,为求形式统一以及减少我们大脑的负担,只用写法1就行了!

(4)说回你的提问,既然sizeof的返回值是unsigned int型,那么很明显可以用 %u 、%o 、%x 来输出,这三个都是无符号整型的格式符,分别对应十进制、八进制、十六进制。

(5)而%zd是修饰符z与有符号十进制整型格式符%d组合而成的格式符,表示按 size_t 的类型来输出。那么,肯定,%zd 可以用来输出 sizeof 的返回值。

(6)而%d是按有符号整型来输出数值,所以与unsigned int的表示范围是不一样的,如果 sizeof 的返回值超出了 %d 的表示范围的话,是会输出一个不正确的数值的。

总结一下:sizeof 的返回值可以用 %u 、 %o 、 %x 、 %zd 来正常输出,而用 %d 的时候需要注意返回值是否会超出 %d (即 signed int 型)的表示范围。

另外,有的 *** 作系统或编译器里,size_t 的类型可能是 long unsigned int 型,所以 输出 sizeof 的返回值的时候, 应该用 %lu 等。

以上,如有帮助,烦请点采纳,谢谢!

1、首先打开VS,新建一个 使用sizeof求出数组的大小 project。

2、接着在左侧文件树添加一个 sizeof.c 源文件。

3、其里面有stdio.h和stdlib.h头文件,也可自己输入。

4、然后输入main函数主体及返回值。

5、定义一个数组,使用sizeof计算出数组的大小。

6、最后编译运行程序,便能输出数组的大小。

1.sizeof函数定义:

sizeof是何方神圣sizeof乃C/C++中的一个 *** 作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。

2.sizeof函数

语法:

sizeof有三种语法形式,如下:

1) sizeof( object )// sizeof( 对象 )

2) sizeof(type_name )// sizeof( 类型 )

3) sizeof object// sizeof 对象

所以,

inti

sizeof( i )// ok

sizeof i// ok

sizeof( int )// ok

sizeof

int// error

实际上,sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。这里,对象可以进一步延伸至表达式,即sizeof可以对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。如:

sizeof( 2 )// 2的类型为int,所以等价于 sizeof( int )sizeof( 2 + 3.14 )//3.14的类型为double,2也会被提升成double类型,所以等价于 sizeof( double)

sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5825045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-02-03
下一篇 2023-02-03

发表评论

登录后才能评论

评论列表(0条)

保存