取数组首地址的问题:

二维数组的首地址、首行地址和元素地址 首先定义一个简单的三行四列的数组: int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };  其中: a代表第0行的首地址,其步长为一行的长度(16B), 所以a+1代表第1行的首地址,比a大16;a+2代表第2行的首地址,比a大32  printf("a=%d  a+1=%d  a+2=%d\n", a, a+1,a+2); &a[... 阅读详情
数组第一个元素的地址和整个数组的首地址到底有什么区别呢?
例如:
1.
int main(int argc, char **argv)
{  
int  a[2]  = {7,8 };  
cout << a << endl;  //取数组第一个元素的地址
cout << &a << endl; // 取整个数组的首地址


cout << a+1 << endl; // 数组第一个元素的地址加1(即sizeof(int ))
cout << &a+1 << endl; // 数组首地址 加1 (即siziof(int)*2)


system("pause");
return 0;
}
从输出结果可以看出,a代表数组第一个元素的地址,&a代表整个数组的首地址
                    a+1代表第一个元素地址加1,也就是第二个元素的地址
&a+1代表整个数组地址加1,也就是整个数组的最后一个元素的地址指向的下一个地址。
2.
如果数组是二维数组,意思可能稍微有点复杂,具体看如下代码注释:
int main(int argc, char **argv)
{  
int  a[2][2]  = {6,7,8,9 };  
cout << a << endl; // a 代表第1个一维数组的第一个元素的地址
cout << &a << endl; // &a代表整个二维数组的首地址。


cout << a+1 << endl; // a+1代表第一个一维数组的第二个元素的地址。
cout << &a+1 << endl;  // &a+1代表整个二维数组的最后一个元素指向的下一个地址。


system("pause");
return 0;
}
C语言——数组名、取数组首地址的区别(二) 目录 数组指针与指针数组 再谈array与&array的区别 array与&array的区别之讨论 array与&array的区别之总结 参考 1. 数组指针与指针数组 在初学C语言时,很难分清楚数组指针和指针数组。这二者到底是什么呢? 数组指针:首先它是一个指针,指向一个数组,“指向数组的指针”。在32位系统下永远占4个字节,至于它指向的数组占多少个字节,只有在定义该指针时才知道。 指针数组:首 阅读详情

相关推荐

数组名是不是数组元素首地址?

&符号 (1)int &r = i; 在声明中,表示引用 (2)p = &i; 在表达式里,是取址运算符 *符号 (1)int *p; 在声明中,表示指针 (2)*p = i; 在表达式里,是解引用运算符 左值和右值 一般来说,赋值操作等号左边是(可修改的)左值,右边取右值 变量 一块有名字的存储区域,是左值 值 某种类型的二进制数据,是右值 左值/右值示例 int...

oyt1999的博客 6001

【C笔记】关于数组地址+1的含义(&a+1)

以下C语言指令运行结果是? int a[5]={1,3,5,7,9}; int *p=(int *)(&a+1); printf("%d,%d",*(a+1),*(p-1)); 输出为3,9. 解析: *(a+1)其实就是指a[1],输出为3. *(p-1)输出为多少? &a+1不是首地址+1,系统会认为加了一个a数组,偏移了整个数组a的大小(也就是5个int的...

在下能猫 的博客 8377

generate for与always内for:Verilog循环的静态生成与动态执行之辨

本文深入解析Verilog中generate for与always内部for循环的核心差异。generate for使用genvar变量在编译时静态生成硬件结构,适用于模块实例化;always内部for使用整型变量在运行时动态执行,综合为并行逻辑。理解这两种循环的适用场景和综合结果对提升数字电路设计质量至关重要。

yog99的博客 1087

C语言-指针-数组-两种取地址的方式

第一种:&array[0],很清楚取的是数组的第一位地址。第二种:array ,在数组的中数组名代表着数组的首地址。数组的首地址有两种表达方式。

m0_55823320的博客 4892

Adams中AKISPL和DX函数的妙用:打造精准的非线性衬套模型

本文深入探讨了在Adams动力学软件中,如何巧妙运用AKISPL插值函数与DX等位移测量函数,构建高精度的非线性衬套模型。文章通过实战案例,详细解析了从单轴非线性刚度到完整六自由度耦合模型的实现步骤与调试技巧,帮助工程师将复杂的实验或有限元数据转化为可靠的多体动力学仿真模型,有效提升系统仿真置信度。

sky77的博客 319

Halcon实战:如何快速找到图像中的多个圆并计算圆心距离(附完整代码)

本文详细介绍了Halcon在工业视觉检测中快速定位图像中的多个圆并计算圆心间距离的实战方法。通过两种核心算法(阈值分割和动态阈值)的对比分析,结合完整代码示例和参数调优技巧,帮助开发者高效解决多圆检测问题,提升工业检测精度与效率。

weixin_33701251的博客 316

数组首地址取地址

一、问题来由 普通指针可被改动导致地址偏移: #include <iostream> using namespace std; int main(int argc,char *argv[]) { int a = 6; int *p = &a; //p存放一个地址。pp存放p的地址,上面的代码能够让p存放的地址偏移...

diandingyin9417的博客 595

计算蛋白质结构中氨基酸之间的方向和方位

方向 (Direction):通过相邻氨基酸的 CαCα​ 原子坐标差值,得到方向向量,描述两个氨基酸之间的几何方向。方位 (Orientation):可以通过二面角(如 Psi)来表示相邻氨基酸之间的旋转关系,或者通过局部坐标系(基于 NN、CαCα​、CC 原子)描述残基的空间取向。这些计算是研究蛋白质结构动力学、折叠过程、以及相互作用的基础,尤其是在使用机器学习和深度学习模型进行蛋白质结构预测时,这些几何信息有助于更好地捕捉残基之间的空间关系。

qq_27390023的博客 1680

数组地址加一详解

int a[5]={1,2,3,4,5}; //int *a=new int[5]; int *ptr=(int*)(&a+1); //&a+1相当于加了数组的一个单位(也就是一行),即&a[5] printf("%d", *(p-1)) //指针p-1相当于前移一个元素,输出为5 a是数组首地址a[0]的地址,&a是对象(数组)首地址; a+1,表示指针指向下一个元素a[1],这是因为系统在内存中为数组分配一个连续.

cutemypig的博客 7970

【DICOM后处理】qt+vs 实现DICOM数据四视图显示

方法用于 设置 2D 视图的“向上”方向,即定义图像在屏幕坐标系中的朝向。该方法直接影响影像的显示方向,尤其在多平面重建(MPR)或非标准切面显示时至关重要。:方法用于 设置渲染窗口在屏幕上的显示位置(以像素为单位)。它控制的是 VTK 渲染窗口的左上角在屏幕坐标系中的坐标位置。DICOM四视图通常指同时显示医学影像的四个不同平面或视角,用于全面分析三维数据(如CT、MRI等)。:基于 标量值 设置不透明度(控制不同组织的显示),显示骨骼or显示高密度流体等。默认朝向原点 (0, 0, 0)

weixin_41804847的博客 1325

华为OD机试 - 魔法收积木 - 二进制(Java 新系统 200分)

华为OD机试 新系统 题库疯狂收录中,刷题。

学Java,找哪吒 443

数组地址表示方法以及数组地址 + 1含义

a[0] + 1中“1”代表第0行的一维数组,在地址上表现为偏移一个一维数组所占地址空间,这里占4*4B=16B;&a[0][0] + 1中“1”代表二维数组中一个存放对象,在地址上表现为一个整型量占用空间,这里是一个整型数占4B,所以偏移量为4B。对于一维数组加减常数,例如a[0] + 1,其偏移单位应该是一个数组中存放的对象,若表现在地址偏移上,a[0] + 1 的地址应该是a[0]地址加上数组存放对象所占地址空间。其数组的起始地址为&a[0]或用数组变量a表示,即为起始地址为a或&a[0]。

Gongteng_Xiner的博客 1565

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2151

数组首元素地址、数组首地址、整个数组地址的分析

现在定义一个char a [10];的数组,下面对这几个名词进行分析: 1、数组首元素地址 :该数组有10个元素,数组首元素即a[0],取的是该元素的地址。 2、数组首地址:就是数组名字a的地址。 3、整个数组地址:就是整个数组的地址,取地址&amp;a。 下面的代码进行测试: #include &lt;stdio.h&gt; #include &lt;stdlib.h&g...

嵌入式 2万+

《C#零基础入门之百识百例》(七)算数运算符 -- 圆的面积

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,本文带你学习C# 中算数运算符。

陈言必行 -- Unity游戏开发领域优质博主 3614

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C语言——数组名、取数组首地址的区别(一)

目录: 1. 开篇 2. 论数组名array、&array的区别 3. array、&array的区别表现在什么地方 4. 讨论 5. 参考 1.开篇 很多博客和贴吧都有讨论这个话题,各有自己的表述方式,今天在他们的基础上我将继续试着以我自己理解的方式总结一下,欢迎大家的审阅和指评。2.论数组名array、&array的区别——省政府和市政府的区别 例如: int arr

区块链之美 4万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数组地址,数组首地址,数组首元素地址的区别

声明:本文转载自博客园 原作者作者:Min 原文链接:https://www.cnblogs.com/MinPage/p/14202641.html 数组地址,数组首地址与数组首元素地址的区别1.0 理清概念2.0 代码测试2.1 静态数组2.1.0分析2.2动态内存分配2.2.0分析 1.0 理清概念 C++中的int*、int**、int&、int*&、int *a[]、int(*a)[]: int a; //a是一个int型【变量】 int *a; //a是一

drgeek的博客 4799

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

结构体数组取首地址的方法

如何对一个结构体数组取首地址? 以结构体二维数组为例: 用c-free示例。 可见,对于一个结构体一维数组a[2] &a &a[0] &a[0].age 都可以表示结构体首地址。 拓展: 对于一个结构体二维数组 可见,对于一个结构体一维数组a[2][3] &a &a[0] &a[0][0] &a[0][0].age 都可以表示结构体首地址。 我们可以依次规律推导N维结构体数组 结构体二维数组测试代码: #include “stdio.h

静晨66的博客 1万+

C语言中数组的首元素地址和首地址

C语言中数组的首元素地址和首地址: 虽然首元素地址和首地址在数值上是相同的,但是它们所表示的意义却不相同: 数组的首元素地址:表示数组的首个元素的地址。 数组的首地址:表示整个数组的地址。 #define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int main(int argc, ...

Hello_MyDream的博客 6万+

数组名arr和取数组首地址&arr的区别

一、论数组名array、&array的区别——省政府和市政府的区别 例如: int array[4] = {0}; 其中的&array是整个数组array的首地址,array是数组首元素的首地址(和&array[0]一样),其值相同,但是“意义不同”。 我们知道array是数组首元素的首地址(和&array[0]一样),&array是整个数组array的首地址。二者的值相同,但是“意义不同”。这就好比,陕西的省政府在西安,而西安市的市政府也在西安,两个政府都在西安,但

qq_41306849的博客 1650

数组名和取数组首地址的区别

#include &lt;iostream&gt; using namespace std; int main() { int arr[5] = {1,2,3,4,5}; cout &lt;&lt;" arr = " &lt;&lt; arr &lt;&lt; endl; cout &lt;&lt;" &amp;arr = "

只要学不死,就往死里学 4362

数组元素首地址和数组首地址区别

int main() { int arr[10] = {0}; printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 printf("...

骑猪看彩虹的博客 5606

数组元素首地址和数组首地址

int main() { int arr[10] = {0}; printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 printf("数组首地址+1 :%d\n",&arr+1); //数组首地址 2293320 retu.

like_study_cat的博客 3125

C++ 数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p

数组名a: 数组名可以作为数组第一个元素的指针。由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址。数组中的其他元素可以通过a的位移得到,此时的进阶是以数组中单个的元素类型为单位的,即a+i= &a[i]。 数组名取地址&a: 对于一个普通的变量b,&b是指用取地址符号取得变量b的存放地址;a在内存中...

Mongo_girl 6621

数组首地址

指针可以,开始我们说了指针可以认为是游离的,所以他本身的值可以变化,而自加就是让指针的首地址变化,但是数组是固定的, 要变化一个数组的首地址就要用到双指针。 关键:数组的首地址是常量指针 不能改变 unsigned char p1_f[30]={0}; unsigned char p1_b[300]={0}; void change_page(unsigned char **p1_f,u...

weixin_42916705的博客 1285

C语言中,数组首地址,数组元素首地址,数组名的区别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、什么是指针? 二、正式介绍 1数组名和数组首元素地址 2.arr和&arr的区别 ​ ......

drgeek的博客 6455
上一篇: 数组和数组名的关系
下一篇: sizeof()和.length()
CHF_VIP
博客等级 码龄14年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值