C语言数组和指针笔试题(三)(一定要看)
目录
- 字符数组四
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
- 例题7
- 结果
- 字符数组五
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
- 例题7
- 结果
- 字符数组六
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
- 例题7
- 结果
感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python
字符数组四
char arr[] = "abcdef";
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[] = "abcdef";
printf("%d\n", strlen(arr));
这里的arr是代表的整个字符串,由于字符串中的字符分别是’a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘\0’,而strlen计算几个是除掉\0,因此结果为6
例题2
char arr[] = "abcdef";
printf("%d\n", strlen(arr+0));
arr+0=&arr[0],&arr[0]是第一个字符a的地址,因此strlen会从第一个字符a开始寻找\0,所以结果是6,因为数组的储存地址是连续的,所以先取寻找数组中的\0在哪,如果数组中没有\0,就会越界查找,知道找到\0
例题3
char arr[] = "abcdef";
printf("%d\n", strlen(*arr));
*arr是对arr首元素地址进行解引用是字符a,并没有\0,所以会报错
例题4
char arr[] = "abcdef";
printf("%d\n", strlen(arr[1]));
这里其实和例题3是一样的,arr[1]是字符b,没有\0,所以会报错
例题5
char arr[] = "abcdef";
printf("%d\n", strlen(&arr));
&arr是取的整个数组的地址,也就是首元素地址,&arr和&arr[0]的不同在之前有讲过,这里就不说了,因此strlen会从第一个字符a查找,直到找到\0,结果是6
例题6
char arr[] = "abcdef";
printf("%d\n", strlen(&arr+1));
&arr+1虽然是跳过了整个数组,但其实质仍然是一个数组地址,不知道\0在哪所以是一个随机值
例题7
char arr[] = "abcdef";
printf("%d\n", strlen(&arr[0]+1));
&arr[0]+1=&arr[1],是从第二个字符’b’的地址开始向后找,因此结果就应该比从整个元素的地址开始向后找少一(因为b是在a之后),所以结果是5
结果
因为例题3和例题4无法打印,所以就打印的其他例题

字符数组五
char *p = "abcdef";
1:printf("%d\n", sizeof(p));
2:printf("%d\n", sizeof(p+1));
3:printf("%d\n", sizeof(*p));
4:printf("%d\n", sizeof(p[0]));
5:printf("%d\n", sizeof(&p));
6:printf("%d\n", sizeof(&p+1));
7:printf("%d\n", sizeof(&p[0]+1));
例题1
char *p = "abcdef";
printf("%d\n", sizeof(p));
p是一个指针变量储存的是字符串的地址,所以sizeof§是求一个地址的大小,结果是4或者8
例题2
char *p = "abcdef";
printf("%d\n", sizeof(p+1));
p+1是跳过整个字符串的地址,但还是地址,所以结果仍然是4或者8
例题3
char *p = "abcdef";
printf("%d\n", sizeof(*p));
这里的 * p是对字符串中的字符’a’地址解引用,所以 *p=‘a’,由于字符是char类型,所以sizeof(*p)结果是1
调试结果如下

例题4
char *p = "abcdef";
printf("%d\n", sizeof(p[0]));
p[0]是字符串中的第一个字符a,因为是char类型,所以结果是1
例题5
char *p = "abcdef";
printf("%d\n", sizeof(&p));
&p是取出指针变量p的地址,因为是一个地址所以结果是4或者8
例题6
char *p = "abcdef";
printf("%d\n", sizeof(&p+1));
&p+1仍然是一个地址,所以结果还是4或者8
例题7
char *p = "abcdef";
printf("%d\n", sizeof(&p[0]+1));
&p[0]+1是取字符串第二个字符b的地址,所以结果为4或者8
结果

字符数组六
char *p = "abcdef";
1:printf("%d\n", strlen(p));
2:printf("%d\n", strlen(p+1));
3:printf("%d\n", strlen(*p));
4:printf("%d\n", strlen(p[0]));
5:printf("%d\n", strlen(&p));
6:printf("%d\n", strlen(&p+1));
7:printf("%d\n", strlen(&p[0]+1));
例题1
char *p = "abcdef";
printf("%d\n", strlen(p));
p是指针变量取的是字符串的地址,等于字符a的地址,strlen§就是从字符a开始寻找\0,所以结果为6
例题2
char *p = "abcdef";
printf("%d\n", strlen(p+1));
这里的p是数组首元素地址,p+1是跳过数组的一个元素所以p+1=&p[1],因此strlen是从字符’b’的地址开始寻找\0,所以结果是5
例题3
char *p = "abcdef";
printf("%d\n", strlen(*p));
*p是对字符’a’地址解引用,就是字符a,没有\0所以会报错
例题4
char *p = "abcdef";
printf("%d\n", strlen(p[0]));
p[0]是字符串中的第一个元素a,没有\0,所以会报错
例题5
char *p = "abcdef";
printf("%d\n", strlen(&p));
&p是取指针变量的地址,注意p是字符串的地址,但是&p就不是字符串的地址,所以&p中我们不知道他的地址是什么样的,结果是一个随机值

例题6
char *p = "abcdef";
printf("%d\n", strlen(&p+1));
&p+1是跳过p的地址,因为地址中不知道\0在哪,所以是一个随机值
例题7
char *p = "abcdef";
printf("%d\n", strlen(&p[0]+1));
&p[0]+1=&p[1],是第二这个字符’b’的地址,因此strlen是从b开始寻找\0,所以结果是5
结果

相关文章:
C语言数组和指针笔试题(三)(一定要看)
目录 字符数组四例题1例题2例题3例题4例题5例题6例题7 结果字符数组五例题1例题2例题3例题4例题5例题6例题7结果字符数组六例题1例题2例题3例题4例题5例题6例题7 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个…...
leetcode11 盛水最多的容器
题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 示例 输入:[1,8,6,2,5,4,8,…...
进入数据结构的世界
数据结构和算法的概述 一、什么是数据结构二、什么是算法三、如何去学习数据结构和算法四、算法的时间复杂度和空间复杂度4.1 算法效率4.2 大O的渐进表示法4.3 时间复杂度4.4 空间复杂度4.5 常见复杂度对比 一、什么是数据结构 数据结构是计算机存储、组织数据的方式。&#x…...
stm32之看门狗
STM32 有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同…...
纤维蛋白单体(FM)介绍
纤维蛋白单体(FM)是血栓形成的早期产物,是纤维蛋白原(Fibrinogen,Fbg)在凝血酶(Thrombin)的作用下,脱掉肽A(Fibrinopeptide A,Fp A)与…...
知识图谱实战导论:从什么是KG到LLM与KG/DB的结合实战
前言 本文侧重讲解: 什么是知识图谱LLM与langchain/数据库/知识图谱的结合应用 比如,虽说基于知识图谱的问答 早在2019年之前就有很多研究了,但谁会想到今年KBQA因为LLM如此突飞猛进呢 第一部分 知识图谱入门导论 //待更.. 第二部分 LLM与…...
第5章 会话与会话技术
第5章 会话与会话技术 一. 单选题(共5题,50分)二. 判断题(共5题,50分) 一. 单选题(共5题,50分) (单选题) 阅读下面代码: Book book BookDB.getBook(id)…...
IDEA2023新UI回退老UI
idea2023年发布了新UI,如下所示 但是用起来真心不好用,各种位置也是错乱,用下面方法可以回退老UI...
ElasticSearch(三)
1.数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些…...
【LinkedHashMap】146. LRU 缓存
146. LRU 缓存 解题思路 与普通的 HashMap 不同,LinkedHashMap 会保持元素的有序性。这可以在某些情况下提供更可预测的迭代顺序直接获取元素 因为使用到该元素 将该元素重新放入队尾 表示最近使用该元素写入元素,首先如果该元素原来存在 那么需要将ke…...
Opencv-python去图标与水印方案实践
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色ÿ…...
自己写过比较蠢的代码:从失败中学习的经验
文章目录 引言1. 代码没有注释2. 长函数和复杂逻辑3. 不恰当的变量名4. 重复的代码5. 不适当的异常处理6. 硬编码的敏感信息7. 没有单元测试结论 🎉 自己写过比较蠢的代码:从失败中学习的经验 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&a…...
C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)
1 汇编实现 text global _start start: ************** LED1点灯 ---> PE10 **************/ ************** RCC章节初始化 **************/ CC_INIT:1.使能GPIOE组控制器,通过RCC_MP_AHB4ENSETR寄存器设置GPIOE组使能0x50000A28[4] 1ldr r0,0x50000A28 准…...
LABVIEW 实战案例1--温度报警系统
图1 温度报警系统前面板 图2 温度报警系统后面板...
【力扣】292. Nim 游戏
题目描述 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数…...
IAP固件升级分几步?(Qt上位机、)
前言 这周一直想做一个IAP固件升级的上位机,然后把升级流程全都搞懂 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com IAP原理 IAP的原理我就不多赘述了,这里贴上几位大佬的文章 STM32CubeIDE IAP原理讲解,及U…...
Otter改造 增加springboot模块和HTTP调用功能
环境搭建 & 打包 环境搭建: 进入 $otter_home/lib 目录执行:bash install.sh 打包: 进入$otter_home目录执行:mvn clean install -Dmaven.test.skip -Denvrelease发布包位置:$otter_home/target 项目背景 阿里…...
Vue.js vs React:哪一个更适合你的项目?
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
Debian环境下搭建STM32开发环境
1. 安装交叉编译工具,解压gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2,并且把交叉编译环境添加到path路径。 2.安装下载工具驱动和下载工具 # 安装下载工具openocd sudo apt -y install openocd 3.下载测试 sudo openocd -f cmsis-dap.cfg -…...
如何防止商业秘密泄露(洞察眼MIT系统商业机密防泄密解决方案)
在当今的商业环境中,保护公司的商业秘密是至关重要的。商业秘密可能包括独特的业务流程、客户列表、研发成果、市场策略等,这些都是公司的核心竞争力。一旦这些信息被泄露,可能会对公司的生存和发展产生重大影响。本文将探讨如何通过使用洞察…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
