C语言关键字sizeof 与strlen

news2025/1/12 23:15:28

sizeof()

 sizeof操作数所占空间的字节数大小,是一种c中的基本运算符。

  可以以类型、指针、数组和函数等作为参数。
  返回值类型为unsigned int

   运算值在编译的时候就出结果,所以可以用来定义数组维数。

1. #include<stdio.h>
2. // sizeof 关键字 计算变量或数据类型所占的字节个数
3. int main()
4. {
5. printf("char size: %d \n", sizeof(char) );
6. printf("short size: %d \n", sizeof(short) );
7. printf("int size: %d \n", sizeof(int) );
8. printf("long int size: %d \n", sizeof(long int) );
9. printf("long long size: %d \n", sizeof(long long) );
10. printf("float size: %d \n", sizeof(float) );
11. printf("double size: %d \n", sizeof(double) );

    return 0; 
}

 运行结果:

sizeof(char): 1
sizeof(short): 2
sizeof(int): 4
sizeof(long): 4
sizeof(long long): 8
sizeof(float): 4
sizeof(double): 8

字节(byte)是计算机信息技术用于计量存储容量的一种计量单位。一个字节8位二进制构成。

程序示例: 

 

 

 

 

sizeof计算指针的占用空间大小

这里需要注意的是,32位平台所有类型的指针的占用空间大小都是4个字节,64位平台所有类型的指针占用的空间大小为8个字节,观察如下代码:

#include <stdio.h>


int main()
{
	printf("sizeof(char*): %d\n", sizeof(char*));
	printf("sizeof(short*): %d\n", sizeof(short*));
	printf("sizeof(int*): %d\n", sizeof(int*));
	printf("sizeof(long*): %d\n", sizeof(long*));
	printf("sizeof(long long*): %d\n", sizeof(long long*));
	printf("sizeof(float*): %d\n", sizeof(float*));
	printf("sizeof(double*): %d\n", sizeof(double*));
	return 0;
}

 在32位下执行结果如下:

sizeof(char*): 4
sizeof(short*): 4
sizeof(int*): 4
sizeof(long*): 4
sizeof(long long*): 4
sizeof(float*): 4
sizeof(double*): 4

 在64位下执行结果如下:

sizeof(char*): 8
sizeof(short*): 8
sizeof(int*): 8
sizeof(long*): 8
sizeof(long long*): 8
sizeof(float*): 8
sizeof(double*): 8

用于计算数组长度以及对字符数组时与strlen的区别

使用sizeof计算数组时,结果为数组长度*数组元素占用空间的大小,当数组为字符数组时,sizeof的功能是一致的,只不过当使用字符数组定义字符串的时候,对于字符串比如hello,数组中会自动增加一个元素’\0’,所以sizeof计算的结果为6,而strlen是计算字符串长度的,遇到’\0’结束但是不把’\0’计算在内因此strlen计算的结果为5,这与我们感觉上的字符串的长度为5的感觉是一致的,这就是strlen和sizeof在计算字符数组的时候的区别.

示例1: 

# include <stdio.h>
# include <string.h>


int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
	printf("sizeof(arr): %d\n", sizeof(arr));
	char arr2[] = "hello";
	printf("sizeof(arr2): %d\n", sizeof(arr2));
	printf("strlen(arr2): %d\n", strlen(arr2));
	return 0;
}

 运行结果如下:

sizeof(arr): 40
sizeof(arr2): 6
strlen(arr2): 5

示例二:

int main()
{
	char *p = "hello";
	char arr1 []= "hello";
	char arr2[] = { 'h', 'e', 'l', 'l', 'o' };
	printf("%d\n", sizeof( p));
	//结果4,因为指针变量的所占空间大小仅仅和操作系统位数有关32-4,64-8
	printf("%d\n", sizeof(arr1));
	//结果6,字符串默认以\0结尾,sizeof()包含\0的计算
	printf("%d\n", sizeof(arr2));
	//结果为5,因为为字符型表示,并不含有\0(仅仅字符串有\0)
	printf("%d\n", strlen( p));
	//结果为5,strlen求的是字符串的长度,不包含\0
	printf("%d\n", strlen(arr1));
	//结果为5,strlen求的是字符串的长度,不包含\0
	printf("%d\n", strlen(arr2));
	//因为字符型不包含\0,但字符串需要找到\0才可结束,所以在'o'之后继续向后读取直到找到\0,所以是一个随机值

最后转载一篇写的很好的博客,参考

(97条消息) C语言中的sizeof()和strlen()的区别_strlen()与sizeof()_zhao111222333444的博客-CSDN博客icon-default.png?t=N4P3https://blog.csdn.net/zhaocx111222333/article/details/109142273?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168569089616800211541565%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168569089616800211541565&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109142273-null-null.142^v88^control,239^v2^insert_chatgpt&utm_term=sizeof&spm=1018.2226.3001.4187
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构的基本概念

数据结构概念 1.数据&#xff1a;所有能输入计算机且能被计算机处理的符号总称 2.数据元素&#xff1a;是数据的基本单位&#xff0c;表示数据集合中的一个个体。 3 .数据项&#xff1a;数据元素中有独立含义的最小单位。 数据结构&#xff1a;相互之间存在一定关系的数据元素的…

YYDS练手 130道python练习题 完整版PDF

近年来&#xff0c;Python在编程语言界里赚足了风头&#xff0c;无论是受欢迎程度&#xff0c;还是薪资待遇&#xff0c;都非常可观&#xff0c;相应的&#xff0c;Python岗位要求也越来越高&#xff0c;无论你是零基础还是老前辈&#xff0c;在Python面试中都不能轻视。 不打…

MPLS-VPN实验

1、拓扑 2、需求&#xff1a; pc1通过vpn访问pc2 3、配置思路 第一步&#xff1a;配置接口地址 第二步&#xff1a;配置ospf 第三步&#xff1a;配置bgp 第四步&#xff1a;配置mpls 第五步&#xff1a;配置VRF -创建VRF -开启 ipv4-family -接口加入VRF -给接口重新配置…

挂在网盘到本地磁盘(以中移动云盘为例)

发现百度网盘速度越来越慢&#xff0c;因此我想怎么讲百度网盘中300多个G的文件同步到移动云中&#xff0c;因此就有了这一步的探索。 利用Alist将中国移动网盘挂载到本地磁盘 解压Alist工具包&#xff0c;运行里面的alist-xxxx.exe文件&#xff0c;启动过程如下&#xff1a; …

图扑虚拟现实 VR 智慧办公室可视化

前言 “虚拟现实”是来自英文“Virtual Reality”&#xff0c;简称 VR 技术&#xff0c;其是通过利用计算机仿真系统模拟外界环境&#xff0c;主要模拟对象有环境、技能、传感设备和感知等&#xff0c;为用户提供多信息、三维动态、交互式的仿真体验。 效果展示 图扑软件基于…

JS - DangerJs运用

JS - DangerJs运用 前言一. 前期准备1.1 创建私有 Token1.2 Git 设置对应的 Token 以及 Host 环境变量1.3 项目安装 dangerJs 二. 测试 前言 在开源社区中&#xff0c;DangerJs可以拿来自动判断每个人提交的代码合并请求&#xff08;github中叫Pull Request&#xff0c;简称PR…

(学习日记)2023.04.24

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

MKS SERVO4257D 闭环步进电机_系列1 产品简述

第1部分 产品概述 1.1 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口&#xff0c;RS485接口和CAN接口&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&#xff0c…

C语言—文件操作

文件操作 什么是文件文件的打开和关闭文件指针文件的打开和关闭fopenfclose 文件的顺序读写fputcfgetcfputsfgetsfprintffscanffwritefread经典面试题sscanfsprintf 文件的随机读写fseekftellrewind 文本文件和二进制文件文件读取结束的判定文件缓冲区 前言 在写完通讯录的程序…

Android 14新功能全面概述

Android 14有什么新功能&#xff1a;全面概述 Android 14带来了大量的新功能和更新&#xff0c;从前台服务和闹钟的改进到语法屈折和字体缩放&#xff0c;Android 14为每位开发者都提供了一些东西。我在下面列出了一些最重要的更改。让我们深入探讨一下这个最新版本的新功能。 …

Patcher:用于精确医学图像分割的混合专家patch Transformers

文章目录 Patcher: Patch Transformers with Mixture of Experts for Precise Medical Image Segmentation摘要本文方法patcher块Mixture of Experts Decoder 实验结果 Patcher: Patch Transformers with Mixture of Experts for Precise Medical Image Segmentation 摘要 提…

内存泄漏检测工具Valgrind:C++代码问题检测的利器

Valgrind&#xff1a;C代码问题检测的利器 一、引言&#xff08;Introduction&#xff09;1.1 Valgrind的定义与功能&#xff08;What is Valgrind and its functions&#xff09;1.2 Valgrind的重要性&#xff08;The importance of Valgrind&#xff09;1.3 Valgrind的应用场…

分享一个国内免费的ChatGPT网站,手机电脑通用,免费无限制,支持AI绘画

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 作为一个AI爱好者&#xff0c;翻遍了各大基于ChatGPT的网站&#xff0c;终于找到一个免费&#xff01;免登陆&#xff01;手机电脑通用&#xff01;国内可直接对话的C…

真实有用的工作英语 高阶版英文邮件写作

PS&#xff1a;美国老师建议在邮件里最好不要用&#xff0c;下划线&#xff0c;斜体&#xff0c;加粗等花里胡哨的东西。 To whom it may concern. 给可能关心这件事的人。To anyone who is interested in this matter. 给对这件事感兴趣的人。To the relevant person(s). 给相…

dom阶段实战内容

window定时器方法 ◼ 目前有两种方式可以实现&#xff1a;  setTimeout 允许我们将函数推迟到一段时间间隔之后再执行。  setInterval 允许我们重复运行一个函数&#xff0c;从一段时间间隔之后开始运行&#xff0c;之后以该时间间隔连续重复运行该函数。 ◼ 并且通常情况…

使用 Kotlin 实现 SOLID 原则编写清晰易维护的代码

使用 Kotlin 实现 SOLID 原则编写清晰易维护的代码 在编写软件时&#xff0c;很容易陷入特定编程语言&#xff0c;库和工具的细节中。然而&#xff0c;良好的软件设计不是与任何特定技术相关联的&#xff1b;相反&#xff0c;它基于一组经过多年和多个项目证明有效的原则。其中…

量子计算:纠错码 量子算法

文章目录 量子纠错码Shor 码CSS 码Steane 码一般性错误容错量子计算 量子算法量子 Fourier 变换Shor 算法求阶问题&#xff08;整数分解&#xff09;求周期问题&#xff08;离散对数&#xff09; Grover 算法 量子纠错码 对于量子态的纠错&#xff0c;与经典信息论中的纠错有着…

ATTCK v13版本战术介绍——防御规避(七)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术&#xff0c;本期我们为大家介绍ATT&CK 14项战术中防御规避战术第37-42种子技术&#xff0c;后续会介绍其他技术&#xff0c;敬请关…

2000-2020全要素生产率OP法+LP法+OLS和固定效应法三种方法合集含原始数据和计算过程Stata代码

2000-2020全要素生产率OP法LP法OLS和固定效应法三种方法合集含原始数据和计算过程Stata代码 1、时间&#xff1a;OP法&#xff1a;2008-2020年、LP法2000-2020年、OLS和固定效应法2000-2020年 2、数据内容&#xff1a;包括原始数据、计算结果和stata do文档 3、方法说明&…

node版本管理(Windows)

node版本管理&#xff08;Windows&#xff09;&#xff0c;使用 nvm 进行node版本管理 1、如果电脑安装有node&#xff0c;需要先卸载 2、安装 nvm 管理工具&#xff0c;nvm 官网地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 3、将下载下来的压缩包…