C/C++里面的数组名字会退化为指针,所以数组名a实际指的是数组的第一个元素的地址。而数组名作为指针来讲有特殊性,它正在它所指向的内存区域中,&a的值和a的数值是相同的(可以输出观察一下),但是类型和意义不同。而指针的加法操作和指向的数据类型密切相关。
比如:
int a[10]; a就相当于int *,如果是对它加1(a + 1)是相当于a + 1 * sizeof(int)。但是&a的类型则相当于int **,是所谓指向数组的指针,是数组元素类型的二级指针,对它加1是相当于 &a + 1 * sizeof(a)的,所以会偏移一个数组长度。

先上一段很简单的代码:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{int x=5,*p_int=&x;int aa[10]={1,2,3,4,5,6,7,8,9,10};cout<<"\naa:\t"<<aa<<"\naa+1:\t"<<aa+1;cout<<"\n&aa:\t"<<&aa<<"\n&aa+1:\t"<<&aa+1<<"\n\n";cout<<"\np_int:\t"<<p_int<<"\np_int+1:"<<p_int+1;cout<<"\n&p_int:\t"<<&p_int<<"\n&p_int+1:"<<&p_int+1;return 0;
}

运行结果为:

aa:          0x6ffe00
aa+1:     0x6ffe04
&aa:       0x6ffe00
&aa+1:  0x6ffe28

p_int:        0x6ffe3c
p_int+1:      0x6ffe40
&p_int:     0x6ffe30
&p_int+1: 0x6ffe38

得结论:
①数组名+1,是+数组元素大小的字节数;数组名的地址+1,是+整个数组大小的字节数
②指针+1,是+指针类型对应字节数;指针的地址+1,是+8

C++里数组名+1和数组名的地址+1的区别相关推荐

  1. C语言的数组名和对数组名取地址

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  2. php 检测键名,【PHP教学|带你学习用PHP检测键名是否位于数组中,方法已经告诉你了,如果你想学就赶紧】- 环球网校...

    [摘要]PHP作为一种超文本预处理器,已经成为了我们常用的网站编程语言,并且结合了C语言,Java等我们常见的编程语言,所以,有很多web开发领域的新人都看中了他的使用广泛性,有很多人都想了解php的 ...

  3. 解析:数组名a、数组名取地址a、数组首地址a[0]、数组指针*p

    数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼. 1 解析不同变量之间的区别: 数组名a: 数组名可以作为数组第一个元素的指针.我们由数组和指针的关系知道,a代表这个地址数值,它相当于一 ...

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

    数组名a: 数组名可以作为数组第一个元素的指针.由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址.数组中的其他元素可以通过a的位移 ...

  5. 【C语言】sizeof(数组名),包括 一维数组、字符数组、二维数组

    目录 1. 数组名.sizeof(数组名).&数组名 2. 一维数组的sizeof() 2.1 整型数组的sizeof() 2.2 字符数组的sizeof() 2.3 字符串赋值给字符数组的s ...

  6. php 获取数组最小值,php 获取数组中最小的值与键名的方法

    上一篇博文说的是php获取数组中最大的值与键名的方法,那么这篇博文就说一下php获取数组中最小的值与键名的方法.获取数组中最小的值可以使用php中的预设函数 min() ,其使用方法也非常的简单. p ...

  7. a为数组名。sizeof(a)和sizeof(a)有什么区别?结果是?

    a为数组名.sizeof(a)和sizeof(&a)有什么区别?结果是? sizeof(a) 求的是 数组的空间大小. sizeof(&a),此时&a指的是一个指针,而指针的大 ...

  8. PHP二维数组去重(指定键名)

    本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...

  9. c语言 数组指针,C语言数组名及指向数组指针的小结

    相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址. 现在有这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地 ...

  10. 数组名与指向数组的指针之间的联系与区别【数据结构】

    我们遇到一个非常棘手的问题,这个问题就是,对于一堆数据来说,我们进行存储,放到一个指定的仓库当中,先前我们使用数组加加标的形式进行访问仓库当中的元素位置,但是呢,现在我们使用的是一个指针结构,指针指向 ...

最新文章

  1. 百度编辑器上传图片自定义路径,访问路径动态加载
  2. 存在即合理:基于云计算的EMR
  3. 光盘刻录只允许读取不能拷贝_原来 8 张图,就可以搞懂「零拷贝」了
  4. Linux——进程管理学习简单笔记
  5. LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)
  6. 10038 mysql,关于MySql 10038错误的完美解决方法(三种)
  7. 动画库Animate.css
  8. Optional类的使用
  9. c语言中如何存储日志,C语言解析日志,存储数据到伯克利DB
  10. Think In Java读书笔记:内部类覆盖及其初始化
  11. js中 json对象与json字符串相互转换的几种方式
  12. Ubuntu修改键盘布局
  13. UiPath Excel 复制粘贴
  14. Alt+Shift+NumLock
  15. 作为技术宅的我,是这样追鬼滅の刃的
  16. 微信小程序 — 保存文件到本地的两种方式
  17. 小曾带你刷牛客03(Java版本)
  18. 深入理解Android相机体系结构
  19. Comodo的多域名通配符https证书
  20. TJA1050 引脚

热门文章

  1. So easy Webservice 1.Socket建设web服务
  2. android一键分享功能不使用任何第三方sdk
  3. Windows Phone 内容滑动切换实现
  4. 《那些年啊,那些事——一个程序员的奋斗史》——78
  5. python 32bit数据结构_python实现bitmap数据结构详解
  6. 160 - 8 Andrnalin.1
  7. 【C++grammar】格式化输出与I/O流函数
  8. CNN基本步骤以及经典卷积(LeNet、AlexNet、VGGNet、InceptionNet 和 ResNet)网络讲解以及tensorflow代码实现
  9. dbms支持哪几种数据模型_DBMS中不同类型的数据模型
  10. scala中命名参数函数_Scala中带有命名参数的函数