c语言中“sizeof”和“strlen”的区别

news2024/9/23 13:20:24

sizeof:

    是操作符,不是函数

    计算变量所占的内存空间的大小,单位是字节,如果是类型的话,计算的是使用类型创建所占空间的大小。

    只关注内存空间,不管什么类型。

strlen:

       是函数库函数):求字符串的长度,只能针对字符串(字符数组)

       统计字符串中“\0"前的字符个数。关注是否有“\0”,如果没有,会持续往后找,可能会越界

例题:

int main(){

    char arr1[]={'a','b','c'};

char arr2[]="a b c";          //末尾有隐藏的\0

printf("%zd\n",strlen(arr1));      //随机值,因为找不到\0会一直往下找,会出现随机值。

printf("%zd\n",strlen(arr2));      // 3

printf("%zd\n",sizeof(arr2));     // 3

printf("%zd\n",sizeof(arr2));     // 4

数组和指针:

整型数组:

数组名是首元素地址,除了“sizeof(数组名)”和“&(数组名)

int main(){

int a[]={1,2,3,4};

pritnf("%zd\n",sizeof(a));        //16  因为数组名a单独在sizeof的内部,a表示整个数组

pritnf("%zd\n",sizeof(a+0));    //4或者8   数组名+0还是首元素地址,看是X64,还是X86.

pritnf("%zd\n",sizeof(*a));       //4          a表示首元素地址,但是*a就是首元素a[0]。

pritnf("%zd\n",sizeof(a+1));    //4或者8    首元素地址+1,表示a[1].

pritnf("%zd\n",sizeof(a[1]));    //4              就是表示元素a[1]。

pritnf("%zd\n",sizeof(&a));      //4或者8.    &a--整个数组地址,只要是地址就是4或者8.

pritnf("%zd\n",sizeof(*&a));    //16             其中的*和&相互低消了,就是访问的整个数组a

pritnf("%zd\n",sizeof(&a+1));  //4或者8.     &a+1--就是表示跳过整个数组后那个位置的地址。

pritnf("%zd\n",sizeof(&a[0]));  //4或者8.      

pritnf("%zd\n",sizeof(&a[0]+1));//4或者8.    首元素+1就是第二个元素的地址。

以上有关只要是地址就是4或者8 的可以去看7月 30号“c语言中的指针变量大小,以及指针类型的意义”文章里面有介绍。

字符数组

int main(){

char arr[]={'a','b','c','d','e','f'};

printf(%d\n",sizeof(arr));          //6             数组单独放在sizeof里面表示整个数组

printf(%d\n",sizeof(arr+0));      //4或者8    数组名表示首元素地址

printf(%d\n",sizeof(*arr));         //1              arr表示首元素地址,*arr就是首元素

printf(%d\n",sizeof(&arr));        //4或者8     &(数组)是整个数组

printf(%d\n",sizeof(&arr+1));    //4或者8      表示跳过整个数组后的位置的地址

printf(%d\n",sizeof(&arr[0]+1));//4或者8     

printf(%d\n",sizeof(arr));           //随机值     若是没有发现‘\0’就会继续往下找。

printf(%zd\n",strlen(arr+0));      //随机值

printf(%zd\n",strlen(*arr));        //‘a’--97直接系统崩了,传给strlen,会以为97是地址,就去访问

printf(%zd\n",strlen(arr[1]));      //同上

printf(%zd\n",strlen(&arr));        //随机值    取数组的地址

printf(%zd\n",strlen(&arr+1));    //随机值

printf(%zd\n",strlen(&arr[0]+1)); //随机值

return 0;

}

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

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

相关文章

头晕,脖子酸痛?颈椎有问题,人就废了一半!颈椎病分3级,不同阶段治疗方法不一样!

每天下午快下班时,在办公室就会看到一种现象: 大家纷纷扭脖子、抬头、耸肩膀......诶,脖子太难受了! 毕竟每天长时间的面对电脑,我们的脖子在承受着巨大的压力。尤其,低头 45 度时,脖子甚至承受…

Fyne ( go跨平台GUI )中文文档- 扩展Fyne (七)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

图像处理软件,常用于照片编辑和修饰

一、简介 1、一款功能强大的图像处理软件,常用于照片编辑和修饰。它提供多种工具和特效,允许用户调整照片的亮度、对比度、色彩、锐化等 二、下载 1、文末有下载链接,不明白可以私聊我哈(麻烦咚咚咚,动动小手给个关注收藏小三连&a…

【掘金量化使用技巧】用日线合成长周期k线

掘金API中的接口最长的周期是‘1d’的,因此周线/月线/年线等数据需要自己进行合成。 基本思路 用日线合成长周期的k线只需要确定好合成的周期以及需要的数据即可。 周期: 一般行情软件上提供年k、月k、周k,我也选择年、月、周再加一个季度频率。 数据:…

图纸加密防泄密软件 | 从设计到交付,2024年值得关注的图纸加密软件大盘点!

图纸者,匠心之凝聚,智慧之结晶。然,信息之海浩瀚无垠,暗流涌动,图纸之安全,实乃企业之头等大事。 故,择一良器,以密护图纸,实为当务之急。 以下,七款图纸加密…

Linux之实战命令01:xargs应用实例(三十五)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

高刷显示器哪个好?540Hz才有资格称高刷

高刷显示器哪个好?说实话,540Hz这些才能成为高刷显示器,什么200,240的,都不够高,什么是从容,有我不用才叫从容。下面我们一起来看看540Hz的高刷显示器都有哪些吧! 1.高刷显示器哪个好 - 蚂蚁电…

2024风湿免疫科常用评估量表汇总,附操作步骤与评定标准!

常笑医学整理了5个风湿免疫科常用的评估量表,包括类风湿关节炎患者病情评价(DAS28)、系统性狼疮活动性测定(SLAM)等。这些量表在常笑医学网均支持在线评估、下载和创建项目使用。 01 类风湿关节炎患者病情评价 &#x…

实践中如何选择o1或sonnet3-5?

简述 AI更新太快导致我们不知选择什么使用更好?本文对比了新模型o1系列和Claude-3.5-sonnet的一些特点,针对不同开发场景提供了选择建议,希望能为你提供一些模型选择的参考。 模型对比 o1系列: 优势: 推理能力非常强&#xff0…

【动态规划】两个数组的 dp 问题二

两个数组的 dp 问题 1.正则表达式匹配2.交错字符串3.两个字符串的最小ASCII删除和4.最长重复子数组 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃&#x1…

高德地图自定义点标记

const markerContent <div class"custom-content-marker"> <span>摄像机<span> <img src"//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png"> </div> marker.value new AMap.Marker({position:…

Ubuntu搭建java开发环境

一&#xff1a;Ubuntu安装 1、下载Ubuntu 24.04.1 LTS 官网下载地址&#xff1a;https://releases.ubuntu.com/24.04.1/ubuntu-24.04.1-desktop-amd64.iso 可以直接点击这里下载 2、使用VMware安装 新建虚拟机 之后一直下一步&#xff0c;到如下界面&#xff0c;选择 刚刚…

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

战神5/战神:诸神黄昏/God of War Ragnarok(容量175GB)百度网盘下载

版本介绍 v1.0.612.4312|容量175GB|官方简体中文|支持键盘.鼠标.手柄|赠单板学习补丁 配置要求 战神5/战神&#xff1a;诸神黄昏/God of War Ragnarok 游戏介绍 不灭的北欧传奇 由Santa Monica Studio出品、Jetpack Interactive负责PC移植的佳作《God of War Ragnark》将带您…

python实现语音唤醒

1. 环境 python版本&#xff1a;3.11.9 2.完整代码 import sqlite3 import timefrom funasr import AutoModel import sounddevice as sd import numpy as np from pypinyin import lazy_pinyin# 模型参数设置 chunk_size [0, 10, 5] encoder_chunk_look_back 7 decoder_c…

气膜体育馆:低成本、高效益的体育空间解决方案—轻空间

随着全民健身和健康生活理念的兴起&#xff0c;各类体育场馆需求日益增加。在这样的市场背景下&#xff0c;气膜体育馆凭借其低成本、快速建造以及灵活多变的空间设计&#xff0c;成为现代体育场馆建设的新趋势。气膜技术为体育场馆提供了一种全新的解决方案&#xff0c;让运营…

Tomcat 漏洞复现

1、CVE-2017-12615 1、环境开启 2、首页抓包&#xff0c;修改为 PUT 方式提交 Tomcat允许适用put方法上传任意文件类型&#xff0c;但不允许isp后缀文件上传&#xff0c;因此需要配合 windows的解析漏洞 3、访问上传的jsp文件 4、使用工具进行连接 2、后台弱⼝令部署war包 1…

新建flask项目,配置入口文件,启动项目

pycharm新建flask项目时&#xff0c;会提供一个创建flask项目的导向&#xff0c;自动设置虚拟环境&#xff0c;并且安装flask及其依赖而vscode新建flask项目时&#xff0c;需要手动设置虚拟环境并安装flask&#xff0c;需要在终端使用pip install flask命令来安装flask及其依赖…

一文了解什么是大模型?到底大模型有什么用呢?

党中央、国务院面向未来准确把握时代大势&#xff0c;已于十三五期间部署推进数字中国建设&#xff0c;《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》更是将“加快数字化发展&#xff0c;建设数字中国”单列成篇&#xff0c;要求“提高数字政府建设水平”&#…

Kettle的实战练习指南:从数据导入到ETL自动化

在数据集成和数据仓库建设中&#xff0c;Kettle作为一个强大的开源ETL工具&#xff0c;提供了灵活的数据抽取、转换和加载功能。本文将通过实战案例&#xff0c;详细介绍Kettle在数据导入、ETL流程设计、自动化任务调度等方面的应用。 一、数据导入 1. SQL语句导入 导入sql语…