C++一维数组和指针的关系总结
对于数组int a[10];
a表示数组的第一个元素的地址,即&a[0];
如果使指针p,指向数组的首元素,可以进行操作:
int * p=a;
或者
int *p=&a[0];
那么p++,是指向数组中的先一个元素,即a[1];
此时*p则是a[1]中所放的值。
此时,a[i]=p[i]=*(a+i)=*(p+i)
下面举一个例子;
直接用a[i]来输出
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- for(i=0;i<10;i++)
- cout<<a[i]<<" ";
- cout<<endl;
- return 0;
- }
用*(a+i)来输出
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- for(i=0;i<10;i++)
- cout<<*(a+i)<<" ";
- cout<<endl;
- return 0;
- }
用*(p+i)来输出
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- int * p=a;
- for(i=0;i<10;i++)
- cout<<*(p+i)<<" ";
- cout<<endl;
- return 0;
- }
关于*p++
由于++和*的优先级相同,结合方向是自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使指向p的值加1.
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- int * p=a;
- while(p<a+10){
- cout<<*p++<<"\t";
- }
- cout<<endl;
- return 0;
- }
等价于
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- int * p=a;
- while(p<a+10){
- cout<<*p<<"\t";
- p++;
- }
- cout<<endl;
- return 0;
- }
*p++等价于*(p++);而*(++p)表示先使p+1,再取*p.
- #include<iostream>
- using namespace std;
- int main(){
- int a[10]={1,2,3,4,5,6,7,8,9,10};
- cout<<"Please input 10 intergers: "<<endl;
- int i=0;
- int * p=a;
- while(p<a+10){
- cout<<*(++p)<<"\t";
- }
- cout<<endl;
- return 0;
- }
运行上面的程序,结果将输出a[2]到a[11]的值,其中a[11]并没有定义。
C++一维数组和指针的关系总结的更多相关文章
- C语言学习笔记之数组与指针的关系
首先,大家先需知道一个关于基类型的概念 基类型:组成一个新类型的基础类型 这句话是什么意思呢?举个例子: int a[3] = {1,2,3}; 上面是由三个int类型的数组成一个新的类型也就是数组, ...
- C/C++中数组与指针的关系探究
数组与指针 长期以来,在C/C++中,数组名和指向数组首元素的指针常量到底是以一种什么关系,一直困扰着很多人.很多地方,甚至是一些教科书中都在说,"数组名就是一个指向数组首元素的指针常量&q ...
- C语言之一维数组与指针
一维数组: 假如有一维数组如下: ]; 该数组有3个元素,数据类型为char型,地址空间如下. 如果想访问数据,直接使用a[0].a[1].a[2]取出相应地址空间的值即可 一级指针: 指针即地址,c ...
- [C++]指针和指向数组的指针[一维数组与指针]
1.一维数组与指针 形如:int型 数组 a[10] 1)&a[0] 地址常量;地址类型:int *型 ; 存储数组a的首地址 ...
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...
- c语言中多维数组和指针的关系
如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址 ...
- C语言核心之数组和指针详解
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...
- 深入理解C/C++数组和指针
C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...
- C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法
本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...
随机推荐
- 解决Eclipse下第三方库无法导航源代码
写在前面(的废话):Eclipse无法导航代码,存在的可能性非常多,这里我们只讨论在引用第三方库时无法导航的情况,是一个很简单的Case,但是搜索能力好像不太及格,没找到一针见血的方案,于是自己研究了 ...
- 解除被DenyHosts锁定的IP地址
自己的本本无法ssh上服务器,提示 ssh_exchange_identification: read: Connection reset by peer 仔细回想,自己手贱把~下面的一个ssh文件删 ...
- jQuery插入节点的方法
注:摘自<锋利的jQuery(第二版)> append() 向每个匹配的元素内部追加内容: HTML代码:<p>我想说:</p>jQuery代码:$(" ...
- MFC使用Windows media player播放声音文件
一.在需要播放声音的资源上添加控件 资源视图 . 选择添加控件的资源(如对话框).右键单击.插入ActiveX控件.调整你需要的控件属性并记录ID 二.在项目中添加播放声音的类 点击菜单中的项目.添 ...
- C++ dynamic_cast实现原理
dynamic_cast是一个操作符,其用法不再赘述.查看汇编码可以发现实际调用的是这个函数__RTDynamicCast,其内部实现如下: rtti.h: #pragma once extern & ...
- mysql入库中文乱码问题
mysql> show variables like '%char%';+--------------------------+----------------------------+| Va ...
- 初探ListView和Adapter
关于Android Adapter(适配器),参考Devin Zhang’s blog.简单的说,Adapter起到的作用是使得前端的显示和后端的数据能够适配,用以下代码作为例子 1234567891 ...
- 10-2[RF] OOB validation
main idea: 在使用bootstrap生成gi的训练集时,会有一部分数据没有被选中,使用这一部分数据(OOB)进行validation. 1.数据没有被选中的概率 假设训练集大小为N,使用bo ...
- HDOJ1166 敌兵布阵
赤裸裸的线段树,借个模板,改写一下即可. 代码: #include<iostream> #include<cstdio> #include<stdio.h> #in ...
- float
.clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: b ...