C++里数组名+1和数组名的地址+1的区别
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的区别相关推荐
- C语言的数组名和对数组名取地址
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
- php 检测键名,【PHP教学|带你学习用PHP检测键名是否位于数组中,方法已经告诉你了,如果你想学就赶紧】- 环球网校...
[摘要]PHP作为一种超文本预处理器,已经成为了我们常用的网站编程语言,并且结合了C语言,Java等我们常见的编程语言,所以,有很多web开发领域的新人都看中了他的使用广泛性,有很多人都想了解php的 ...
- 解析:数组名a、数组名取地址a、数组首地址a[0]、数组指针*p
数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼. 1 解析不同变量之间的区别: 数组名a: 数组名可以作为数组第一个元素的指针.我们由数组和指针的关系知道,a代表这个地址数值,它相当于一 ...
- C++ 数组名a、数组名取地址a、数组首地址a[0]、数组指针*p
数组名a: 数组名可以作为数组第一个元素的指针.由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址.数组中的其他元素可以通过a的位移 ...
- 【C语言】sizeof(数组名),包括 一维数组、字符数组、二维数组
目录 1. 数组名.sizeof(数组名).&数组名 2. 一维数组的sizeof() 2.1 整型数组的sizeof() 2.2 字符数组的sizeof() 2.3 字符串赋值给字符数组的s ...
- php 获取数组最小值,php 获取数组中最小的值与键名的方法
上一篇博文说的是php获取数组中最大的值与键名的方法,那么这篇博文就说一下php获取数组中最小的值与键名的方法.获取数组中最小的值可以使用php中的预设函数 min() ,其使用方法也非常的简单. p ...
- a为数组名。sizeof(a)和sizeof(a)有什么区别?结果是?
a为数组名.sizeof(a)和sizeof(&a)有什么区别?结果是? sizeof(a) 求的是 数组的空间大小. sizeof(&a),此时&a指的是一个指针,而指针的大 ...
- PHP二维数组去重(指定键名)
本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...
- c语言 数组指针,C语言数组名及指向数组指针的小结
相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址. 现在有这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地 ...
- 数组名与指向数组的指针之间的联系与区别【数据结构】
我们遇到一个非常棘手的问题,这个问题就是,对于一堆数据来说,我们进行存储,放到一个指定的仓库当中,先前我们使用数组加加标的形式进行访问仓库当中的元素位置,但是呢,现在我们使用的是一个指针结构,指针指向 ...
最新文章
- 百度编辑器上传图片自定义路径,访问路径动态加载
- 存在即合理:基于云计算的EMR
- 光盘刻录只允许读取不能拷贝_原来 8 张图,就可以搞懂「零拷贝」了
- Linux——进程管理学习简单笔记
- LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)
- 10038 mysql,关于MySql 10038错误的完美解决方法(三种)
- 动画库Animate.css
- Optional类的使用
- c语言中如何存储日志,C语言解析日志,存储数据到伯克利DB
- Think In Java读书笔记:内部类覆盖及其初始化
- js中 json对象与json字符串相互转换的几种方式
- Ubuntu修改键盘布局
- UiPath Excel 复制粘贴
- Alt+Shift+NumLock
- 作为技术宅的我,是这样追鬼滅の刃的
- 微信小程序 — 保存文件到本地的两种方式
- 小曾带你刷牛客03(Java版本)
- 深入理解Android相机体系结构
- Comodo的多域名通配符https证书
- TJA1050 引脚
热门文章
- So easy Webservice 1.Socket建设web服务
- android一键分享功能不使用任何第三方sdk
- Windows Phone 内容滑动切换实现
- 《那些年啊,那些事——一个程序员的奋斗史》——78
- python 32bit数据结构_python实现bitmap数据结构详解
- 160 - 8 Andrnalin.1
- 【C++grammar】格式化输出与I/O流函数
- CNN基本步骤以及经典卷积(LeNet、AlexNet、VGGNet、InceptionNet 和 ResNet)网络讲解以及tensorflow代码实现
- dbms支持哪几种数据模型_DBMS中不同类型的数据模型
- scala中命名参数函数_Scala中带有命名参数的函数