数组名和指针数组名深度复习
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//sizeof只关注占用内存空间的大小,不在乎内存中存放的是什么
//是操作符
/*
int main()
{
char arr[] = { "abcdef" };
//a b c d e f \0
printf("%d\n", sizeof(arr));//7
//在初始化的时候f后面还有一个\0
printf("%d\n", sizeof(arr + 0));//4或8
//arr+0是首元素地址,是地址就是4或8
printf("%d\n", sizeof(*arr));//1
//a的地址解引用就是a,一个字节
printf("%d\n", sizeof(arr[1]));//1
//第二个元素b,一个字节
printf("%d\n", sizeof(&arr));//4或8
//取出整个数组的地址,是地址就是4或8
printf("%d\n", sizeof(&arr + 1));//4或8
//跳过这个数组还是地址,是地址就是4或8
printf("%d\n", sizeof(&arr[0] + 1));//4或8
//是b的地址,是地址就是4或8
return 0;
}
*/
#include <string.h>
/*
//strlen是求字符串长度的,关注的是字符中的\0,计算的是\0之前出现的字符的个数
//是库函数,只针对字符串
int main()
{
char arr[] = { "abcdef" };
//a b c d e f \0
printf("%d\n", strlen(arr));//6
//字符串长度读取到\0结束,计算\0之前出出现的字符的个数
printf("%d\n", strlen(arr + 0));//6
//首元素地址开始向后读取到\0结束
printf("%d\n", strlen(*arr));//err
//传的是第一个元素,非法访问
printf("%d\n", strlen(arr[1]));//err
//传的是第二个元素,非法访问
printf("%d\n", strlen(&arr));//6
//
printf("%d\n", strlen(&arr + 1));//随机值
//跳过整个数组向后读取到\0结束
printf("%d\n", strlen(&arr[0] + 1));//5
//从第二个元素开始向后读取到\0结束
return 0;
}
*/
int main()
{
char* p = "abcdef";//a b c d e f \0
//p指向的是首字符a,p里面存放的是a的地址
printf("%d\n", sizeof(p));//4或8
//p是一个指针变量,存放的是地址,是地址大小就是4或8
printf("%d\n", sizeof(p + 1));//4或8
//地址+1还是地址,是地址就是4或8
printf("%d\n", sizeof(*p));//1
//p存的是a的地址,对p解引用就是a,a的大小就是1个字节
printf("%d\n", sizeof(p[0]));//1
//p[0]等价于*(p+0)相当于*p
printf("%d\n", sizeof(&p));//4或8
//取出的是地址,是地址就是4或8
printf("%d\n", sizeof(&p + 1));//4或8
//地址+1还是地址,是地址就是4或8
printf("%d\n", sizeof(&p[0] + 1));//4或8
//p[0]相当于*p是首字母a,取出a的地址+1跳过一个字符就是b的地址
printf("%d\n", strlen(p));//6
//p里存放的是a的地址,从a向后数到\0结束
printf("%d\n", strlen(p + 1));//5
//a的地址+1是b的地址,从b向后数到\0结束
printf("%d\n", strlen(*p));//err
//*p是a,传过去,非法访问
printf("%d\n", strlen(p[0]));//
//*p还是a,传过去,非法访问
printf("%d\n", strlen(&p));//随机值
//&p取出的是p的地址,这里的内存什么时候遇到\0是不确定的
printf("%d\n", strlen(&p + 1));//随机值
//还是随机值
printf("%d\n", strlen(&p[0] + 1));//5
//a的地址+1是b的地址,从b开始向后数到\0结束
return 0;
}
相关文章:
数组名和指针数组名深度复习
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //sizeof只关注占用内存空间的大小,不在乎内存中存放的是什么 //是操作符 /* int main() { char arr[] { "abcdef" }; //a b c d e f \0 printf("%d\n", sizeof(arr));//…...
Linux 诞生
目录 Linux诞生背景 Linus Torvalds的创举 Linux内核的首次发布 Linux诞生背景 在计算机操作系统的发展史上,Linux是一个重要的里程碑。它的诞生源于对自由、开放和协作精神的追求,以及对Unix操作系统的深入研究和改进。 在1991年之前,Un…...
借助Aspose.Email,管理受密码保护的 PST 文件
在当今的数字环境中,保护您的数据比以往任何时候都更加重要。确保您的电子邮件数据受到密码保护是维护安全性的关键步骤。对于使用 Microsoft Outlook 数据的开发人员来说,管理受密码保护的 PST(个人存储表)文件可能是一项关键任务…...
MySQL数据库MHA高可用
目录 一、MHA简述 二、MHA 的组成 三、MHA 的特点 四、MHA工作原理 五、MHA部署步骤 六、搭建 MySQL MHA MHA一主两从高可用集群示意图 实验环境 1. Master、Slave1、Slave2 节点上安装 mysql5.7 2. 关闭防火墙 3. 修改 Master、Slave1、Slave2 节点的主机名 4. 修…...
DevEco Studio使用技巧和插件推荐
DevEco Studio是一款强大的集成开发环境(IDE),为开发者提供了丰富的功能和插件。以下是一些使用技巧和插件推荐: 使用技巧 设置中文界面: 打开DevEco Studio,选择“Configure”,再点击“Prefer…...
使用Node.js与Express构建RESTful API
💖 博客主页:瑕疵的CSDN主页 💻 Gitee主页:瑕疵的gitee主页 🚀 文章专栏:《热点资讯》 使用Node.js与Express构建RESTful API 1 引言 2 Node.js与Express简介 3 安装Node.js与Express 4 创建Express项目 5…...
从0开始搭建一个生产级SpringBoot2.0.X项目(二)SpringBoot应用连接数据库集成mybatis-plus
前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 连接Oracle数据库集成mybatis-plus,自定义WrapperFactory。配置代码生成器 一、引入jar包 <!--oracle驱动 --><dependency><groupId>org.springframework.boot</groupI…...
Docker部署教程:打造流畅的斗地主网页小游戏
Docker部署教程:打造流畅的斗地主网页小游戏 一、项目介绍项目简介项目预览 二、系统要求环境要求环境检查Docker版本检查检查操作系统版本 三、部署斗地主网页小游戏下载镜像创建容器检查容器状态查看容器日志安全设置 四、访问斗地主网页小游戏五、总结 一、项目介…...
redis的客户端
目录 redis的客户端一:jedis1:jedis的使用步骤:2:jedis连接池 二:springDataRedis1:入门使用2:配置序列化器3:stringRedisTemplate redis的客户端 一:jedis 1:jedis的使…...
图片分类标注工具python
图片分类标注工具 运行代码:将代码保存到 Python 文件中并运行。选择文件夹:运行时会弹出对话框,选择要分类的图片文件夹。标注分类:程序会逐张显示图片,你可以在下方输入框中输入类别标签,并点击“Next”…...
Rust命令行,实现自动反编译Android APK包工具
Rust-CLI实现自动反编译APK Rust提供了比较好的CLI接口,可以快速的编写命令行应用, 用于日常的工具类使用。 分享一个用Rust命令行实现自动反编译Android APK包工具,是之前学习Rust写的一个练手小工具,可以快速反编译APK,同时也学习下用Rust…...
10. NSTableView Table 数据表格
表格是非常重要和复杂的一个控件,本节会用大量篇幅来把表格这东西力求讲清楚。 基本设置 表格结构 表格是 OS X 组件中为数不多采用了MVC设计模式来实现的控件,即tableView–dataSource–Delegate,这种分层架构给处理数据带来了极大的便利…...
javase笔记8---File与IO流
File类型 简介 在程序中,使用java.io.File这个类来描述和操作磁盘上的一个文件或文件夹(目录)。 File这个类,能新建、删除、移动,重命名文件或文件夹,也能获取或者修改文件或文件夹的信息(如大小,修改时间等)…...
docker上传离线镜像包到Artifactory
docker上传离线镜像包到Artifactory 原创 大阳 北京晓数神州科技有限公司 2024年10月25日 17:33 北京 随着docker官方源的封禁,最近国内资源也出现无法拉取的问题,Artifactory在生产环境中,很少挂外网代理去官方源拉取,小编提供…...
【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】
语音识别在会议点名中的使用 概要解决问题的过程不行的一些参考可以的一个package自定义词语的拼音转换遗留的问题 小结 概要 提示:这里可以添加技术概要 这里只实现一个方面,每个android会议设备都可通过语音发送参会者姓名,自动转换成文字添加到人员名单. 语音采集…...
OS基础-
OS基础 内存管理 内核用户设备管理 设备框架I/O子系统网络多媒体 音频视频运维 控制台GUIdebug审计计算机组成 CPU ALUregister SPLRPCR0-R12CPSRcacheclockInterrupt Vector tableIVTRMMU/MPU 内存访问权限配置,支持多进程BUSMEMORYI/O单线程 特点:结构…...
《大型语言模型实战指南:应用实践与场景落地》一文详解大型语言模型的11种微调方法
导读:大型预训练模型是一种在大规模语料库上预先训练的深度学习模型,它们可以通过在大量无标注数据上进行训练来学习通用语言表示,并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大,微调和推理阶段的资源消耗也在增加。…...
嵌入式浏览器 -- Chromium VS Firefox
嵌入式浏览器概念 嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒…...
权限大、数量多、破坏强、管理难......企业特权访问管理怎么管?
特权账号,通往企业数据大门的“钥匙”。 它权限大,具有高危命令或操作的执行权限; 破坏性强,操作可能影响他人使用或其他系统故障; 信息泄露风险大,操作可能获取别人或其他系统相关隐私信息;…...
UE5 第一人称示例代码阅读0 UEnhancedInputComponent
UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统,看了一下第一人称例子里,算是看明白了,但是感觉这东西使用起来有点绕,特此梳…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
