十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、首先打开VS,新建一个 使用sizeof求出数组的大小 project。
专注于为中小企业提供网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业崇信免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
2、接着在左侧文件树添加一个 sizeof.c 源文件。
3、其里面有stdio.h和stdlib.h头文件,也可自己输入。
4、然后输入main函数主体及返回值。
5、定义一个数组,使用sizeof计算出数组的大小。
6、最后编译运行程序,便能输出数组的大小。
C语言在头文件中实现函数定义,可以按如下方法:
新建一个demo.h(也可以为其它文件名)的头文件,在头文件中添加函数定义,如:extern void demo();
新建一个c文件,在文件中将demo.h包含进来:#include“demo.h”,在此文件中将函数的主体写上,如下:
void demo()
{
printf("Hello.");
}
经过上述步骤,即可完成在头文件中实现函数定义。
(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 等。
以上,如有帮助,烦请点采纳,谢谢!
C语言中sizeof()是一个关键字,不是函数,不需要使用头文件,补足知识:
1、跟int,
float关键字一样,编译器自动识别他们;
2、千万不要因为它长得像函数,就上它的当;
3、就像getchar()的返回值是个int型而不是char型一样,C中有很多陷阱一样。
#includecrtdefs.h// crtdefs.h是size_t所在头文件
// 它的原型定义如下:
#if !defined (_W64)
#if !defined (__midl) (defined (_X86_) || defined (_M_IX86))
#define _W64 __w64
#else /* !defined (__midl) (defined (_X86_) || defined (_M_IX86)) */
#define _W64
#endif /* !defined (__midl) (defined (_X86_) || defined (_M_IX86)) */
#endif /* !defined (_W64) */
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else /* _WIN64 */
typedef _W64 unsigned int size_t;
#endif /* _WIN64 */