C语言数组和指针笔试题(二)(一定要看)
目录
- 字符数组二
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
- 例题7
- 总结
- 字符数组三
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
- 例题7
字符数组二
char arr[] = {'a','b','c','d','e','f'}
1:printf("%d\n", strlen(arr));
2:printf("%d\n", strlen(arr+0));
3:printf("%d\n", strlen(*arr));
4:printf("%d\n", strlen(arr[1]));
5:printf("%d\n", strlen(&arr));
6;printf("%d\n", strlen(&arr+1));
7;printf("%d\n", strlen(&arr[0]+1));
例题1
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(arr));
这里的arr中存放的是字符,而strlen是求的字符串长度,也就是说需要遇见\0才会停止,但是数组中并没有\0,因此会出现越界访问,直到找到\0为止,所以最后的结果会>=6
例题2
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(arr+0));
根据上一篇博客,arr+0就是&arr[0],所以是字符a的地址,但是仍然不知道\0在哪,所以是随机值
例题3
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(*arr));
*arr是对第一个数组元素解引用,就是字符a,所以就没有\0,这段代码可能会报错
例题4
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(arr[1]));
arr[1]是指的第二个元素,是字符b,和例题3一样,找不到\0,可能会报错
例题5
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(&arr));
&arr是整个数组的地址,但是不知道\0在哪,所以是随机值
例题6
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(&arr+1));
&arr+1是跳过整个数组,在上一篇博客有讲过,其实意思和上一题一样,是随机值
例题7
char arr[] = {'a','b','c','d','e',}
printf("%d\n", strlen(&arr[0]+1));
&arr[0]+1就是&arr[1]也是地址,不知道\0在哪,所以是随机值
总结
对于strlen而言必须要遇到\0才能停止,所以如果我们找不到\0(arr[]={‘a’,‘b’},strlen(arr[0]))像这样的就是找不到,因为已经确定strlen括号里是一个数组的元素,因为是字符a,并不是\0,所以会找不到
但是如果strlen括号里的是一个地址,strlen会往这个地址后面找,直到找到\0为止
字符数组三
char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr));
2:printf("%d\n", sizeof(arr+0));
3:printf("%d\n", sizeof(*arr));
4:printf("%d\n", sizeof(arr[1]));
5:printf("%d\n", sizeof(&arr));
6:printf("%d\n", sizeof(&arr+1));
7:printf("%d\n", sizeof(&arr[0]+1));
例题1
char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr));
这里先对数组中的字符串说明一下
我们可以看到字符串其实也可以用数组表示,字符串我们可以理解为由多个字符组成,‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘\0’,arr[0]表示的字符串中的第一个元素’a’,arr[1]表示字符串中第二个元素’b’…
因此sizeof[arr]其实可以理解为整个字符串中的所有字符大小,所以最后的结果是7
例题2
char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr+0));
这里的arr+0=&arr[0],是一个地址,sizeof(地址)结果是4或者8
例题3
char arr[] = "abcdef";
1:printf("%d\n", sizeof(*arr));
arr中的arr是字符串中首元素的地址,所以arr是对字符串首元素解引用,就是字符’a’,所以sizeof求的大小就是字符的大小,所以是1
例题4
char arr[] = "abcdef";
1:printf("%d\n", sizeof(arr[1]));
arr[1]是指的字符串中的字符’b’,所以sizeof求的是字符’b’的大小,因为是char类型,所以结果是1
例题5
char arr[] = "abcdef";
1:printf("%d\n", sizeof(&arr));
&arr是地址,所以结果是4或者8
例题6
char arr[] = "abcdef";
1:printf("%d\n", sizeof(&arr+1));
&arr+1也是一个地址,所以结果是4或者8
例题7
char arr[] = "abcdef";
1:printf("%d\n", sizeof(&arr[0]+1));
&arr[0]+1=&arr[1],是地址,所以几个是4或者8
相关文章:

C语言数组和指针笔试题(二)(一定要看)
目录 字符数组二例题1例题2例题3例题4例题5例题6例题7总结 字符数组三例题1例题2例题3例题4例题5例题6例题7 字符数组二 char arr[] {a,b,c,d,e,f} 1:printf("%d\n", strlen(arr)); 2:printf("%d\n", strlen(arr0)); 3:printf("%d\n", strlen(…...

uniapp——实现在线选座功能——技能提升
首先声明一点:下面的内容是从一个uniapp的程序中摘录的,并非本人所写,先做记录,以免后续遇到相似需求抓耳挠腮。 这里写目录标题 效果图代码——html部分cu-custom组件anil-seat组件 代码——jscss部分 效果图 代码——html部分 …...

领域驱动设计:微服务的各种边界
文章目录 演进式架构微服务还是小单体?微服务边界的作用 在用 DDD 进行微服务设计时,我们可以通过事件风暴来确定领域模型边界,划定微服务边界,定义业务和系统运行边界,从而保证微服务的单一职责和随需而变的架构演进能…...

MySQL之数据类型
目录 一、MySQL数据类型分类 二、数值类型 1、整数类型 2、bit类型 3、小数类型 三、字符串类型 1、char 2、varchar 3、char和varchar比较 四、日期和时间类型 五、enum和set 一、MySQL数据类型分类 MySQL 数据类型可以大致分为以下三类: 数值类型:用于…...
词法作用域改变词法作用域
一、词法作用域 1.定义: 为什么叫词法作用域?因为大部分标准语言编译器的第一个工作阶段叫作词法化,词法化的过程会对源代码中的字符进行检查,如果是有状态的解析过程,还会赋予单词语义。 简单来说࿰…...
关于C++的隐藏 (hidden),重载(overload),重写(override)小结。
关于隐藏 (hidden) 假如继承以后,子类出现父类同名函数, 即使参数的形式不同, 也会导致父类的函数隐藏, 不参与函数匹配,不能使用。 这个链接讲的不错。https://zhuanlan.zhihu.com/p/575423511 #include <iostrea…...

算法通关村18关 | 透析回溯的模板
回溯有清晰的解题模板, void backtracking(参数){if (终止条件){存放结果;return;}for (选择本层中的集合元素(画成树,就是树节点孩子的大小) {处理节点;backtracking();回溯,撤销处理结果;}} 1. 从N叉树说起 在回溯之前&#x…...
【论文阅读】Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击)
文章目录 一.论文信息二.论文内容0.摘要1.论文概述2.背景介绍3.作者贡献4.重点图表 一.论文信息 论文题目: Untargeted Backdoor Attack Against Object Detection(针对目标检测的无目标后门攻击) 发表年份: 2023-ICASSP&#x…...

分库分表---理论
目录 一、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 二、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 三、数据分片规则 1、Hash取模分表 2、数值Range分表 3、一致性Hash算法 四、分库分表带来的问题 1、分布式事务问题 2、跨节点关联查询…...
[golang 流媒体在线直播系统] 2.搭建基于golang的流媒体服务器实现拉流推流,以及Html客户端拉取hls类型的流
一.使用 Go 语言的开源框架Livego搭建流媒体服务器 1.Livego 框架的介绍 Go 语言拥有强大的 服务器性能 ,golang 在语言级别解决了 多进程并发 的问题,支持 多核 CPU均衡使用 ,支持 海量轻量级线程 ,所以非常适合做 流媒体服务器 .而 livego 是基于golang 开发的简单高效的…...

9月12日作业
作业代码 #include <iostream>using namespace std;class Shape { protected:double cir;double area; public://无参构造Shape() {cout<<"无参构造"<<endl;}//有参构造Shape(double c, double a):cir(c), area(a){cout<<"有参构造&quo…...

React框架下如何集成H.265网页流媒体视频播放器EasyPlayer.js?
H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…...

《向量数据库》——向量数据库的使用场景有哪些?
向量数据库在许多应用领域都有广泛的用途,特别是那些需要存储、检索和分析向量数据的场景。以下是一些常见的向量数据库使用场景: 1、相似性搜索: 推荐系统:用于根据用户的历史行为或兴趣,搜索相似用户或物品,以提供个性化推荐。图像检索:允许用户通过图像查询相似的图像…...
Java 中 List 集合取补集
交集 Intersection 英 [ˌɪntəˈsekʃn] 并集 Union 英 [ˈjuːniən] 差集 difference of set 补集 complement set 英 [ˈkɒmplɪment] Java 中 List 集合取交集 Java 中 List 集合取并集 Java 中 List 集合取差集 Java 中 List 集合取补集 # 求两个集合交集的补集 List&l…...

我的个人网站——宏夏Coding上线啦
网站地址:宏夏Coding Github地址:🔥🔥宏夏coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推…...

【机器视觉】喇叭的外圆以及金属内圆的同心度视觉检测--康耐德智能
客户的需求 检测内容 喇叭的外圆以及金属内圆的同心度测量 检测要求 精度0.02mm,速度没要求,抽检产品。 评估 视觉可行性分析 对贵司的样品进行了光学实验,并进行图像处理,原则上可以使用机器视觉进行测试测量。 结果 对所有样…...

STM32WB55开发(2)----修改蓝牙地址
STM32WB55开发----2.修改蓝牙地址 概述硬件准备视频教学样品申请完整代码下载选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙设置工程信息工程文件设置修改置BLE设备公共地址Ble_Hci_Gap_Gatt_Init结果演示 概述 在…...

【1++的C++进阶】之C++11(二)
👍作者主页:进击的1 🤩 专栏链接:【1的C进阶】 文章目录 一,类的新变化二,可变参数模板三,lambda表达式 一,类的新变化 在C03之前,我们的默认成员函数有6个,…...

【VS2022】调试
F9 创建或取消断点 ctrlF9 禁用断点 F5 开始调试(到断点处停下来) F10 逐过程(不进入函数) F11 逐语句 F5、F10、F11都可以直接进入调试 【调试】->【窗口】->【监视】,输入变量就可以观察到变量的值。 …...

python:使用RESTful API(flask)调用python程序传递参数,实现Web端调用python程序
问题描述 现有一个用python写的程序(或者是一个或几个的函数接口),需要在Web前端调用python写的函数。如果直接用前端java来调用会很不方便,而且会出现各种麻烦的问题,下面给出如何在web前端调用python的接口。 解决…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...