操作符sizeof与函数strlen哪些事

简介:

@[TOC]

前言:

  • 博主实力有限,博文有什么错误,请你斧正!非常感谢!
  • 本文讨论操作符 sizeof与函数strlen()

操作符sizeof()

  • sizeof是操作符,不是函数(!!!!!!!!)

    image-20210903111643408
  • sizeof 只是测定数据类型(数组类型,指针类型等)在所占内存的大小,单位字节,`不具有`改变测定的数据的性质

    image-20210903112026444
  • 取地址 操作符‘&’

    • 如果取的是变量的地址,那就是变量的地址

      image-20210903155219568
    • 如果是数组名,那取得就是整个数组的地址

    • 不可对地址取地址
    image-20210903161214212
  • 在sizeof中,数组名不代表数组的首元素地址,另外只有当数组名单独使用时 才代表是整个数组

    image-20210903122741827
  • &arr 与 & arr不是一个意思

    *&arr 是取数组地址,后解引用得到数组

    & *arr 是先对数组首元素先解引用,后取其地址

    image-20210903122545150

size_t strlen( const char * str)

  • strlen()的返回值类型是 size_t(无符号整形),参数类型是 char *指针(即使传入的是其它的数据类型都会强制转化为 char *
  • strlen是计算字符串的长度,以‘\0’为计算结束标志

关于数组的必要理解

  • 无论一维还是二维数组名都代表数组首元素的地址

    • 因为内存中数据是连续存储的原因,即内存中,没有所谓的二维数组,只是为了我们编程的方便,抽像出来的。因此二维数组的实质是一维数组,但是其元素类型是一维数组
  • 对数组地址解引用后得到是·数组名---数组首元素地址
image-20210903120823965

例题经典再现

在这里插入图片描述

在这里插入图片描述

希望本文对你有所帮助!
相关文章
|
存储 缓存 关系型数据库
【MySQL进阶-08】深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略
【MySQL进阶-08】深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略
1161 0
|
6月前
|
数据采集 人工智能 自然语言处理
代理IP:撕开AI大模型"可靠性"的华丽外衣
在AI大模型发展热潮中,代理IP的使用正悄然引发数据源头到模型评估的信任危机。从数据采集中的“幽灵请求”到模型测试中的“虚假繁荣”,再到可靠性崩塌的连锁反应,代理IP带来的污染问题日益凸显。文章深入剖析了行为模式失真、内容生成偏差、对抗样本陷阱等问题,并提出通过建立“数字指纹”鉴伪系统、开发环境感知型模型架构和构建动态评估基准来破解困局。唯有清除代理IP的隐忧,回归真实数据,才能夯实AI发展的基石,推动人机共生的可持续进化。
120 1
|
11月前
|
Kubernetes 网络安全 容器
VScode远程服务器进行开发(三)
VScode远程服务器进行开发(三)
245 0
|
9月前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
1161 5
|
Dart IDE 开发工具
Flutter Version Manager (FVM): Flutter的版本管理终极指南
Flutter Version Manager (FVM): Flutter的版本管理终极指南
4718 1
|
监控 数据可视化 安全
万界星空科技铜管加工行业MES系统解决方案
本MES系统解决方案针对铜管加工行业的特点,通过集成生产计划、物料管理、工艺控制、质量管理、设备监控以及数据分析与决策支持等核心功能,实现了生产过程的全面数字化、智能化管理。该方案能够提高生产效率、优化资源配置、提升产品质量和降低生产成本,为企业带来显著的经济效益和社会效益。
186 7
|
小程序 前端开发 PHP
laravel8(一)Target class [XXXXXController] does not exist.错误的解决办法
Laravel 8配置好路由后,访问提示: arduino 复制代码 Target class [XXXXXController] does not exist. 错误。 出现这个错误的原因是Laravel8对路由命名空间做出了更新(详见:路由命名空间更新),而我们仍然在使用Laravel6或者7版本的方式写路由。 Laravel 8路由配置方式: php 复制代码 use App\Http\Controllers\UserController; Route::get('/users', [UserController::class, 'index']); Laravel 6/7路由配置方
237 1
|
弹性计算 关系型数据库 Apache
手把手教你使用阿里云服务器搭建个人博客
这是我第一次搭建个人博客网站,总体上来说还是非常顺利的,主要四个步骤,首先创建阿里云服务器,其次创建云数据库实例,再次阿里云服务器链接云数据库,最后安装WordPress。四步轻松就可以搭建个人博客网站啦,之前搭建博客起码需要一两周的时间,这次建站只花费了我1个小时就完成啦。
3992 12
|
存储 运维 自然语言处理
ARMS实践|日志在可观测场景下的应用
在实际生产中,通过灵活组合文内几种使用方式,运维团队可以很好地排除日常观测、故障定位过程中的干扰因素,更快的定界甚至定位问题根因。
ARMS实践|日志在可观测场景下的应用