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

数组名+1和数组名+1的区别

数组名和&数组名区别

#include <stdio.h>int main()
{int a[5] = {1,2,3,4,5};int *ptr = (int *)(&a + 1);printf("%d,%d,%d\n",*(a + 4),*(ptr - 1),*ptr);     // 2 5 为什么是5printf("数组a[4]的地址%p,(ptr-1)地址%p, ptr的地址%p",(a + 4),(ptr - 1),ptr);    //return 0;
}

a + 1 是在数组内平移一个数据类型大小
&a + 1是在数组末尾进行加一个数据类型的大小,偏移的是整个数组的大小。

这行代码:int ptr = (int )(&a + 1)。首先,取地址符 “&” 对 a 求地址,得到的是一个指向 a 的指针,它是一个数组指针,类型为 int ()[5]。接着,将这个指针加上 1,相当于将指针指向了数组 a 的末尾后的位置,即指向了一个未定义、无效的内存区域。最后,将这个指针强制转换为 int 类型的指针赋值给 ptr 变量。
然后,在这行代码中:printf(“%d,%d\n”,*(a + 1), (ptr - 1)),我们使用指针和数组下标操作来访问数组元素。(a + 1) 表示数组 a 中第二个元素的值,即 2。接着我们来看一下 *(ptr - 1) 的值。由于 ptr 指向的是 a 数组之后的一个位置,所以 ptr-1 指向数组 a 的最后一个元素。因此 *(ptr - 1) 就表示数组 a 的最后一个元素的值,即 5。
所以,这行代码的输出结果是 2,5。

#include <stdio.h>int main(int argc, char *argv[])
{int array[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};int (*parray)[4] = array;       //数组指针int *ptr = (int *)(&array + 1);int *ptr2 = (int *)(&array + 2);printf("值%d,%d,%d\n",array[2][3],*(ptr-1),*(ptr2 - 13));printf("array[2][3]=%p,ptr=%p,ptr2=%p\n",(*(array + 2) + 3),(ptr - 1),(ptr2 - 13));printf("array的大小%d\n",sizeof(array)); return 0;
}

除了以下两种情况,所有的数组名都表示数组首元素的地址。
1、sizeof(数组名),计算整个数组的大小。sizeof内部单独放一个数组名,数组名表示整个数组;
2、&数组名,取出的是数组地址。&数组名,数组名表示整个数组,进行加减操作,是偏移整个数组的大小。

相关文章:

数组名+1和数组名+1的区别

数组名和&数组名区别 #include <stdio.h>int main() {int a[5] {1,2,3,4,5};int *ptr (int *)(&a 1);printf("%d,%d,%d\n",*(a 4),*(ptr - 1),*ptr); // 2 5 为什么是5printf("数组a[4]的地址%p,(ptr-1)地址%p, ptr的地址%p",(a 4)…...

开放原子训练营(第三季)inBuilder低代码开发实验室初体验

一、活动介绍 开放原子训练营开启inBuilder低代码实验室活动。无论您是计算机行业相关从业者、低代码开发爱好者还是普通用户&#xff0c;都可以基于inBuilder低代码开发平台社区版&#xff08;基于UBML开源项目的一个可以广泛使用的发行版&#xff09;&#xff0c;体验向导式、…...

sql数据定义语句(cascade,set,null,no action的区别)

&#xff08;一&#xff09;ADD 基本格式&#xff1a; ALTER TABLE <表名> ADD 新属性名 新属性类型 例&#xff1a;alter table s1 add tele char&#xff08;12&#xff09;&#xff1a;增加一个电话号码&#xff08;tele&#xff09;属性 注&#xff1a; 新增的属…...

Java进程(基础)

基本概念 1、进程&#xff1a;程序的执行过程 2、线程&#xff1a;一个进程可以有单个线程也就是我们说的单线程&#xff0c;还可以有多个线程也就是我们说的多线程&#xff0c; 线程 1、当一个类继承了Thread类就可以当成一个线程用 2、我们会重写run方法写上我们自己的业务…...

Android之 Activity活动详解

一 四大组件 1.1 Activity组件&#xff0c;它一个单独的窗口&#xff0c;程序流程都必须在Activity中运行。 1.2 service组件&#xff0c;用于在后台完成用户指定的操作。 1.3 content provider组件&#xff0c;会为所有的应用准备一个内容窗口&#xff0c;并且保留数据库、…...

车载软件架构——闲聊几句AUTOSAR BSW(五)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们并不必要为了和谐,而时刻保持通情达理;我们需要具备的是,偶尔有肚量欣然承认在某些方面我们可能会有些不可理喻。该有主见的时候能掷地有声地镇得住场…...

APP图标尺寸规范一文了解清楚

在进行图标设计前&#xff0c;熟知手机 app 图标尺寸规范&#xff0c;能更好地去针对不同平台设计出更极致的图标。当前智能手机系统主要以 iOS 及 Android 为主&#xff0c;APP 图标是产品给用户的第一印象&#xff0c;图标视觉设计的美感与吸引力&#xff0c;与用户是否选择下…...

写给程序员Android Framework 开发,

前言 在 Android 开发者技能中&#xff0c;如果想进大厂&#xff0c;一般拥有较好的学历可能有优势一些。但是如果你靠硬实力也是有机会的&#xff0c;例如死磕Framework。Framework 知识广泛应用在Android各个领域中&#xff0c;重要性显而易见。 成为一名Android Framework…...

html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标,css设置按钮层次感,css按钮美化,CSS按钮动画过渡,CSS按钮添加阴影

效果 动态 静态 实现 底部多加了几个过渡按钮 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>#app {margin: 2% auto;text-align: center;}.lay-btn-box {position: relative;display: …...

品优购项目学习记录04--列表页

文章目录 1.品优购项目列表页制作准备工作2.列表页header和nav修改2.1 秒杀logo的制作2.2 导航栏nav修改 3.列表页主体sk_container 1.品优购项目列表页制作准备工作 1.列表页面是新的页面&#xff0c;我们需要新建页面文件list.html 2.因为列表页的头部和底部基本一致&#x…...

script标签type值application/json,importmap和module

type&#xff08;默认text/javascript&#xff09; 该属性定义 script 元素包含或src引用的脚本语言。属性的值为 MIME 类型&#xff08;媒体类型&#xff09;&#xff1b; 如果没有定义这个属性&#xff0c;脚本会被视作 JavaScript。 如果 MIME 类型不是 JavaScript 类型&a…...

基于ArcGIS实现陕西省1:250000比例尺地形图分幅和编号

1地形图的分幅与编号原理 我国1:1000000地形图的分幅采用国际1:1000000地图分幅标准&#xff0c;而其他比例尺地形图分幅以1:1000000比例尺地形图为基准进行分幅。每幅1:1000000地形图范围是经差6、纬差4&#xff1b;纬度60~ 76之间经差12、纬差4&#xff1b;纬度76~ 88之间经…...

校园安全,一键报警主机助力保障

校园安全&#xff0c;一键报警主机助力保障 随着社会发展和科技进步&#xff0c;校园安全问题日益受到重视。如何保障师生们的安全成为了学校一项重要任务。而校园可视一键报警主机就是一种非常有效的安保设备。 这种报警主机集合了视频监控、安全防范、数据处理等多个功能&a…...

RabbitMQ养成记 (7. 消息可靠性投递)

消息可靠性 什么是消息的可靠性呢&#xff1f;&#xff1f; 简单来说就是 你的消息发放给 exchange 这个过程中 有可能丢失或者失败 这时候需要一个回调机制来监控 发送结果 必要时还要返回信息。 rabbitmq 给我们提供了两种&#xff1a; 首先是生产者到exchange发送过程的监…...

SpringBoot配置连接两个或多个数据库

在Spring Boot应用中连接多个数据库或数据源可以使用多种方式&#xff0c;下面介绍两种常用的方法&#xff1a; 1、使用Spring Boot官方支持的多数据源配置 Spring Boot提供了官方支持的多数据源配置&#xff0c;可以简单地配置和管理多个数据源。 需要在application.proper…...

Python面试题汇总:高效备战技巧

Python面试题汇总&#xff1a;高效备战技巧 一、基础知识准备1 语言特点及优缺点2 数据类型3 运算符4 控制流程语句5 函数 二、面向对象编程1 面向对象编程基础2 类的创建及继承3 魔术方法4 多态5 设计模式 三、常用数据结构与算法1 字符串、列表、字典、集合字符串列表字典集合…...

如何区分比特率、波特率和频谱带宽?

01、什么是比特率和波特率&#xff1f; 宽带网络里面提及的千兆即1000Mbit/s&#xff0c;一般描述的是我们家网络端口每秒最大可接收0、1比特&#xff08;bit&#xff09;的数量&#xff0c;即每秒可接收1000x106个比特。显而易见&#xff0c;比特率越高&#xff0c;每秒传送的…...

sklearn中的特征工程(过滤法、嵌入法和包装法)

目录 ​编辑特征工程的第一步&#xff1a;理解业务 Filter过滤法 ​编辑方差过滤 ​编辑- 相关性过滤 - 卡方过滤 - F检验 - 互信息法 ​编辑嵌入法&#xff08;Embedded&#xff09; 包装法&#xff08;Wrapper&#xff09; 特征工程的第一步&#xff1a;理解业务 如…...

Linux C/C++并发编程实战(0)谈谈并发与并行

作为并发编程的第一讲&#xff0c;比较轻松&#xff0c;我们先来谈谈什么是并发和并行。 并发&#xff08;Concurrency&#xff09;是指一个处理器同时处理多个任务。 并行&#xff08;Parallelism&#xff09;是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发…...

2023年5月天津/南京/成都/深圳CDGA/CDGP数据治理认证报名

6月18日DAMA-CDGA/CDGP数据治理认证考试开放报名中&#xff01; 考试开放地区&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特、杭州、南京、济南、成都、西安。其他地区凑人数中… DAMA-CDGA/CDGP数据治理认证班进行中&#xff0c;报名从速&#xff01; DAMA认证为数据管…...

5分钟从图片到3D实物:开源神器ImageToSTL完全指南

5分钟从图片到3D实物&#xff1a;开源神器ImageToSTL完全指南 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项…...

AI接口文档生成已进入工业级阶段:2026奇点大会公布的7项实测指标颠覆传统DevOps流程

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI接口文档生成 2026奇点智能技术大会(https://ml-summit.org) 技术背景与行业痛点 随着微服务架构和API经济的深度演进&#xff0c;企业平均每年新增API数量超过1200个&#xff0c;但其中67%缺乏及时、准确、可执行的文档…...

MiniCPM-V-2_6电商应用实战:商品图多角度比对+卖点文案自动生成

MiniCPM-V-2_6电商应用实战&#xff1a;商品图多角度比对卖点文案自动生成 1. 引言&#xff1a;电商内容创作的痛点与解决方案 电商卖家每天都要面对一个头疼的问题&#xff1a;商品上架需要大量图片和文案。同一个商品要从不同角度拍摄&#xff0c;还要写出吸引人的卖点描述…...

生产刮刮卡定制制造商推荐

在当今的商业活动中&#xff0c;刮刮卡作为一种集抽奖、防伪与票务功能于一体的营销利器&#xff0c;被广泛应用于促销活动、刮奖卡、景区门票等众多场景。然而&#xff0c;市面上刮刮卡的质量参差不齐&#xff0c;存在防伪性差、可变数据印刷错位或重复、色差大等诸多问题。今…...

如何快速检测Windows热键冲突:Hotkey Detective完整解决方案指南

如何快速检测Windows热键冲突&#xff1a;Hotkey Detective完整解决方案指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

揭秘LLM代码生成落地困局:5类典型业务场景的个性化适配路径(含可复用决策树)

第一章&#xff1a;智能代码生成个性化适配策略 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成已从通用模板输出迈向深度个性化适配阶段。开发者背景、项目约束、团队规范与运行时环境共同构成多维适配边界&#xff0c;单一模型输出无法满足真实工程场景的差异化…...

MinGW-w64跨平台编译架构设计:实现高性能Windows原生应用开发的最佳实践

MinGW-w64跨平台编译架构设计&#xff1a;实现高性能Windows原生应用开发的最佳实践 【免费下载链接】mingw-w64 (Unofficial) Mirror of mingw-w64-code 项目地址: https://gitcode.com/gh_mirrors/mi/mingw-w64 MinGW-w64是一个开源项目&#xff0c;提供了一套完整的G…...

如何快速实现croc项目的测试自动化:完整GitHub Actions CI/CD配置指南

如何快速实现croc项目的测试自动化&#xff1a;完整GitHub Actions CI/CD配置指南 【免费下载链接】croc Easily and securely send things from one computer to another :crocodile: :package: 项目地址: https://gitcode.com/GitHub_Trending/cr/croc croc是一个简单…...

SAP AMDP实战避坑指南:从CDS Table Function到Procedure的完整配置流程

SAP AMDP深度实战&#xff1a;从CDS Table Function到Procedure的高效配置与避坑指南 当ABAP开发者需要在SAP HANA环境中实现高性能数据库逻辑时&#xff0c;AMDP&#xff08;ABAP-Managed Database Procedures&#xff09;已经成为不可或缺的技术选择。不同于传统的ABAP代码&…...

LeetCodehot100-34. 在排序数组中查找元素的第一个和最后一个位置

class Solution { public:int search(vector<int>& nums, int target){//>int left0,rightnums.size()-1;while(left<right){int midleft(right-left)/2;if(nums[mid]<target) leftmid1;else rightmid-1;}return left;}//[0, left-1] 中的所有元素都 < t…...