【C语言】15.sizeof 和strlen

一、sizeof 和strlen 比较

sizeofstrlen
1. sizeof是操作符1. strlen是库函数,使用需要包含头⽂件 string.h
2. sizeof计算操作数所占内存的大小,单位是字节2. srtlen是求字符串长度的,统计的是 \0 之前字符的隔个数
3. 不关注内存中存放什么数据3. 关注内存中是否有 \0 ,如果没有 \0 ,就会持续往后找,可能会越界

二、例题

2.1 一维数组

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));		//16
printf("%d\n",sizeof(a+0));		//4/8
printf("%d\n",sizeof(*a));		//4
printf("%d\n",sizeof(a+1));		//4/8
printf("%d\n",sizeof(a[1]));	//4
printf("%d\n",sizeof(&a));		//4/8
printf("%d\n",sizeof(*&a));		//16
printf("%d\n",sizeof(&a+1));	//4/8
printf("%d\n",sizeof(&a[0]));	//4/8
printf("%d\n",sizeof(&a[0]+1));	//4/8

2.2 字符数组

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));		//6
printf("%d\n", sizeof(arr+0));		//4/8
printf("%d\n", sizeof(*arr));		//1
printf("%d\n", sizeof(arr[1]));		//1
printf("%d\n", sizeof(&arr));		//4/8
printf("%d\n", sizeof(&arr+1));		//4/8
printf("%d\n", sizeof(&arr[0]+1));	//4/8
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", strlen(arr));		//随机值
printf("%d\n", strlen(arr+0));		//随机值
//printf("%d\n", strlen(*arr));		//error
//printf("%d\n", strlen(arr[1]));	//error
printf("%d\n", strlen(&arr));		//随机值
printf("%d\n", strlen(&arr+1));		//随机值
printf("%d\n", strlen(&arr[0]+1));	//随机值
char arr[] = "abcdef";
printf("%d\n", sizeof(arr));		//7
printf("%d\n", sizeof(arr+0));		//4/8
printf("%d\n", sizeof(*arr));		//1
printf("%d\n", sizeof(arr[1]));		//1
printf("%d\n", sizeof(&arr));		//4/8
printf("%d\n", sizeof(&arr+1));		//4/8
printf("%d\n", sizeof(&arr[0]+1));	//4/8
char arr[] = "abcdef";
printf("%d\n", strlen(arr));		//6
printf("%d\n", strlen(arr+0));		//6
//printf("%d\n", strlen(*arr));		//error
//printf("%d\n", strlen(arr[1]));	//error
printf("%d\n", strlen(&arr));		//6
printf("%d\n", strlen(&arr+1));		//随机值
printf("%d\n", strlen(&arr[0]+1));	//5
char *p = "abcdef";
printf("%d\n", sizeof(p));		//4/8
printf("%d\n", sizeof(p+1));	//4/8
printf("%d\n", sizeof(*p));		//1
printf("%d\n", sizeof(p[0]));	//1
printf("%d\n", sizeof(&p));		//4/8
printf("%d\n", sizeof(&p+1));	//4/8
printf("%d\n", sizeof(&p[0]+1));//4/8
char *p = "abcdef";
printf("%d\n", strlen(p));		//6
printf("%d\n", strlen(p+1));	//5
//printf("%d\n", strlen(*p));	//error
//printf("%d\n", strlen(p[0]));	//error
printf("%d\n", strlen(&p));		//6
printf("%d\n", strlen(&p+1));	//随机值
printf("%d\n", strlen(&p[0]+1));//5

2.3 二维数组

int a[3][4] = { 0 };
printf("%d\n", sizeof(a));				//48
printf("%d\n", sizeof(a[0][0]));		//4
printf("%d\n", sizeof(a[0]));			//16
printf("%d\n", sizeof(a[0] + 1));		//4/8
printf("%d\n", sizeof(*(a[0] + 1)));	//4
printf("%d\n", sizeof(a + 1));			//4/8	
printf("%d\n", sizeof(*(a + 1)));		//16
printf("%d\n", sizeof(&a[0] + 1));		//4/8
printf("%d\n", sizeof(*(&a[0] + 1)));	//16
printf("%d\n", sizeof(*a));				//16
printf("%d\n", sizeof(a[3]));			//16

数组名的意义:

  1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小
  2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
  3. 除此之外所有的数组名都表示首元素的地址。

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

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

相关文章

AI大模型的TTS评测

L-MTL(Large Multi-Task Learning)Models 是一种大规模多任务学习模型,通过结合 Mixture of Experts(MMoE)框架与 Transformer 模型,实现对 TTS(Text-to-Speech)系统中多个评估指标的…

Selenium 操作指南:鼠标点击和键盘输入高级技巧

在自动化测试或网页操作中,精确地模拟鼠标点击和键盘输入是至关重要的。Selenium 提供了一个强大的工具——ActionChains 类,它允许用户以编程方式执行复杂的鼠标和键盘操作。本文将深入探讨如何利用 Selenium 的 ActionChains 类来执行鼠标单击、双击、…

浅谈轨道电路分类

区间:移频轨道电路。 站内:工频交流连续式轨道电路、25Hz相敏轨道电路。 工频交流连续式轨道电路(480轨道电路):采用工频50Hz交流电源,以JZXC-480型继电器为轨道继电器,因而又称JZXC-480型轨道…

今日分享丨点亮这四个技能,你也可以成为可视化专家

引言 以大数据、人工智能等为代表的新质生产力时代已悄然而至,央企、国企逐步意识到数据资源展示对于经营管理的重要性和紧迫性。数据可视化成为连接用户与数据的桥梁,藉由设计师的巧手,把复杂抽象的数据以基于管理需求,转化为直…

PAT B1018.锤子剪刀布

题目描述 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图3-1所示。 现给出两人的交锋记录,请统计双方的胜、平、负次数,并给出双方分别出什么手势的胜算最大。输入格式 第一行给出正整数N(≤10),即双方交锋的次数。随后N行,每行给…

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术,它允许开发者创建可复用、封装良好的自定义HTML元素,并直接在浏览器中运行,无需依赖外部库。通过组合HTML模…

Top10在线音频剪辑软件,你了解几款?(免费分享)

多年来,随着音乐制作人和音频工程师的需求不断增长,音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计,一些软件是免费的,并且一些软件提供了出色的音效…

python读取excel中的图片超链接,批量下载到本地

1、代码 import xlrd import requestsread_path C:\\Users\\asus\\Desktop\\大法\\公务员\\国考\\行测\\1-推理判断\\URLs.xlsx bk xlrd.open_workbook(read_path) shxrange range(bk.nsheets) sh bk.sheet_by_name("Sheet2") nrows sh.nrows ncols sh.ncols …

【自撰写】【国际象棋入门】第6课 常见术语分析(一)吃双和抽将

第6课 常见术语分析(一)吃双和抽将 本次课中,我们介绍几种最为常见和常用的(单步棋形成)的局面、术语并对其进行简单的分析。一般说来,这些局面都会给予一方以“立竿见影”的优势,或者引向之后…

“鸿蒙开发之图片下载”--案例问题整理

鸿蒙开发之图片下载 关于以上连接中案例demo使用问题整理如下图 而且在写这个案例的时候记得添加权限 "requestPermissions":[{"name" : "ohos.permission.INTERNET"}]

Java多线程设计模式之不可变对象(Immutable Object)模式

简介 多线程共享变量的情况下,为了保证数据一致性,往往需要对这些变量的访问进行加锁。而锁本身又会带来一些问题和开销。Immutable Object模式使得我们可以在不加锁的情况下,既保证共享变量访问的线程安全,又能避免引入锁可能带…

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err 2024/6/19 14:00 缘起,公司使用LVDS OUT的机芯,4LANE的LVDS输出。1920x108030分辨率(1080p/30) 通过FPGA转换为2LANE的MIPI OUT之后进RK3588/OK3588-C。…

sqlite3指令操作-linux

1.查看当前数据库位置 2.查看当前数据库文件下有哪些表 3.显示 某表创建时的SQL语句 4.打开、关闭显示列标题; 5.列对齐显示 6.列以‘,’分隔显示 .separator 7.查询表信息 8.插入消息 9.删除某一行内容 10.修改某行某列内容 11.修改表名字 alter tab…

【Redis】Redis内存使用优化方法

目录 1. 数据结构选择和优化 2. 内存优化策略 配置文件优化 内存碎片整理 3. 过期策略和持久化配置 4. 连接和客户端优化 5. 监控和调优 6. 硬件和部署优化 7. 使用虚拟内存 8. Redis Cluster和分片 9. 内存碎片整理与优化 10. 使用内置命令和功能 11. 操作系统和…

浅谈golang字符编码

1、 Golang 字符编码 Golang 的代码是由 Unicode 字符组成的,并由 Unicode 编码规范中的 UTF-8 编码格式进行编码并存储。 Unicode 是编码字符集,囊括了当今世界使用的全部语言和符号的字符。有三种编码形式:UTF-8,UTF-16&#…

2024年项目进度控制软件大比拼:找出适合您团队的最佳工具

本文整理了9大热门项目进度控制软件:PingCode、Worktile、Monday.com、Asana、Trello、Jira、ClickUp、Wrike、Zoho Projects。并且进行详细介绍对比。 在项目管理工具的选择上,不同规模的团队有着各自的需求和偏好。例如,小型团队倾向于选择…

新手搭建Magic-API

项目场景: 我本是一个前端和GIS开发工程师,但新单位并没有配置完整的开发团队,确切说目前只有我一个人做开发,那么肯定避免不了要研究下后端。最近有一个小程序要开发,管理平台我直接用的fastAdminthinkphp写完了页面…

终极版本的Typora上传到博客园和csdn

激活插件 下载网址是这个: https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4 解压之后这样的: 解压之后将plugin,复制到自己的安装目录下的resources 点击安装即可: 更改配置文件 "dependencies&q…

XL5300 dTOF测距模块 加镜头后可达7.6米测距距离 ±4%测距精度

XL5300 直接飞行时间(dToF)传感器是一个整体方案dTOF 模组,应用设计简单。片内集成了单光子雪崩二极管(SPAD)接收阵列以及VCSEL激光发射器。利用自主研发的 SPAD 和独特的ToF 采集与处理技术,XL5300模块可实…

选择游戏服务器后期的安全维护有哪些?

随着科技的快速发展,网络行业也逐渐兴起,其中游戏行业也步入了人们的日常生活当中,网络游戏对于服务器的要求也是比较高的,大型的网络游戏需要有着高防御力的服务器,并根据企业自身的业务需求来选择服务器的配置&#…