【C语言】 您所在的位置:网站首页 sizeof在c语言中是什么意思举例 【C语言】

【C语言】

2024-06-19 06:46| 来源: 网络整理| 查看: 265

前言 在我们刚开始学习C语言时,很容易将sizeof和strlen()函数混淆,那么 在这里我们就先介绍一下**sizeof关键字** 一、sizeof是什么呢?

sizeof是C语言的一种单目操作符,如同C语言中其他的操作符++、–等,sizeof运算符是以字节为单位给出操作对象的存储大小。操作对象可以是表达式,类型名,结构体等,下面会一 一举例。

常见的应用场景 1.直接作用于数据类型

代码如下(示例):

printf("short=%d\n\n", sizeof(short));//结果是short=2 printf("int=%d\n\n", sizeof(int));//int=4 printf("long=%d\n\n", sizeof(long));//long=4 printf("float=%d\n\n", sizeof(float));//float=4 printf("double=%d\n", sizeof(double));//double=8 需要注意的是在对数据类型进行操作时括号是不可以省去的,若是省 去则无法通过编译 2.作用于数值 注:上面介绍sizeof是操作符,并不是函数,这就意味着在某些情况下括号是 可以省去的

使用形式;四则偶分(var)或sizeof var(不带控号的在这里就不展示了,大家下去可以自己尝试一下) 代码如下(示例):

char c = 'a'; int a = 1; double b = 1.0; printf("%d ", sizeof(c)); // 结果是1 printf("%d ", sizeof(c + a)); // 结果是4 printf("%d ", sizeof(a + b));//结果是8 //上面两行代码在运行时发生了整型提升这里我们就不介绍了,不懂的小伙伴可以搜一下 printf("%d %c", sizeof(c = c + a),c);//结果是1,a,这说明括号中的赋值没有被执行 3.作用于数组 sizeof用于计算数组大小时,计算的是数组总字节大小,并不受存 储数据多少影响 int arr[10] = { 1,2,5,6,4,7 }; printf("%d ", sizeof(arr));//结果是40 char c[10] = "a,b,c,f,e"; printf("%d ", sizeof(c));//结果是10 4.作用于指针 指针是地址,指向某处内存空间,指针所占字节大小仅受**编译环境** 影响(在32位和64位机器下会有不同),和所指向空间大小无关。下面 我将在64位机器下演示。 int a = 0; int*p1 = &a; printf("%d ", sizeof(p1));//结果是8 char b = 0; char*p2 = &b; printf("%d ", sizeof(p2));//结果是8

可以看出虽然两个指针指向的空间大小不同,但是指针所占空间大小并没有受影响

5.作用于结构体 struct W { int a; short d; char b; long c; }w1; printf("%d ", sizeof(w1));//结果是12 struct WW { char b; int a; long c; short d; }w2; printf("%d ", sizeof(w2));//结果是16

明明结构体中定义的类型都相同,为什么结果有差异呢?哈哈哈这就不提到结构体对齐了,因为这不是我们这次的重点就先不介绍了,有兴趣大家可以搜一搜

下次将介绍strlen()函数和sizeof在计算字符串时的区别


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有