当前位置: 首页 > news >正文

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即是代表红、绿、蓝三个通道的颜色&#xff…...

自己写过比较蠢的代码:从失败中学习的经验

文章目录 引言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系统商业机密防泄密解决方案)

在当今的商业环境中,保护公司的商业秘密是至关重要的。商业秘密可能包括独特的业务流程、客户列表、研发成果、市场策略等,这些都是公司的核心竞争力。一旦这些信息被泄露,可能会对公司的生存和发展产生重大影响。本文将探讨如何通过使用洞察…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...