对于数组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]来输出

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. for(i=0;i<10;i++)
  8. cout<<a[i]<<" ";
  9. cout<<endl;
  10. return 0;
  11. }

用*(a+i)来输出

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. for(i=0;i<10;i++)
  8. cout<<*(a+i)<<" ";
  9. cout<<endl;
  10. return 0;
  11. }

用*(p+i)来输出

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. int * p=a;
  8. for(i=0;i<10;i++)
  9. cout<<*(p+i)<<" ";
  10. cout<<endl;
  11. return 0;
  12. }

关于*p++

由于++和*的优先级相同,结合方向是自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使指向p的值加1.

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. int * p=a;
  8. while(p<a+10){
  9. cout<<*p++<<"\t";
  10. }
  11. cout<<endl;
  12. return 0;
  13. }

等价于

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. int * p=a;
  8. while(p<a+10){
  9. cout<<*p<<"\t";
  10. p++;
  11. }
  12. cout<<endl;
  13. return 0;
  14. }

*p++等价于*(p++);而*(++p)表示先使p+1,再取*p.

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. int a[10]={1,2,3,4,5,6,7,8,9,10};
  5. cout<<"Please input 10 intergers: "<<endl;
  6. int i=0;
  7. int * p=a;
  8. while(p<a+10){
  9. cout<<*(++p)<<"\t";
  10. }
  11. cout<<endl;
  12. return 0;
  13. }

运行上面的程序,结果将输出a[2]到a[11]的值,其中a[11]并没有定义。

C++一维数组和指针的关系总结的更多相关文章

  1. C语言学习笔记之数组与指针的关系

    首先,大家先需知道一个关于基类型的概念 基类型:组成一个新类型的基础类型 这句话是什么意思呢?举个例子: int a[3] = {1,2,3}; 上面是由三个int类型的数组成一个新的类型也就是数组, ...

  2. C/C++中数组与指针的关系探究

    数组与指针 长期以来,在C/C++中,数组名和指向数组首元素的指针常量到底是以一种什么关系,一直困扰着很多人.很多地方,甚至是一些教科书中都在说,"数组名就是一个指向数组首元素的指针常量&q ...

  3. C语言之一维数组与指针

    一维数组: 假如有一维数组如下: ]; 该数组有3个元素,数据类型为char型,地址空间如下. 如果想访问数据,直接使用a[0].a[1].a[2]取出相应地址空间的值即可 一级指针: 指针即地址,c ...

  4. [C++]指针和指向数组的指针[一维数组与指针]

     1.一维数组与指针      形如:int型 数组 a[10]                1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址          ...

  5. C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数

    1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...

  6. c语言中多维数组和指针的关系

    如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址 ...

  7. C语言核心之数组和指针详解

    指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...

  8. 深入理解C/C++数组和指针

    C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...

  9. C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法

    本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...

随机推荐

  1. 解决Eclipse下第三方库无法导航源代码

    写在前面(的废话):Eclipse无法导航代码,存在的可能性非常多,这里我们只讨论在引用第三方库时无法导航的情况,是一个很简单的Case,但是搜索能力好像不太及格,没找到一针见血的方案,于是自己研究了 ...

  2. 解除被DenyHosts锁定的IP地址

    自己的本本无法ssh上服务器,提示 ssh_exchange_identification: read: Connection reset by peer 仔细回想,自己手贱把~下面的一个ssh文件删 ...

  3. jQuery插入节点的方法

    注:摘自<锋利的jQuery(第二版)> append() 向每个匹配的元素内部追加内容:  HTML代码:<p>我想说:</p>jQuery代码:$(" ...

  4. MFC使用Windows media player播放声音文件

    一.在需要播放声音的资源上添加控件 资源视图  . 选择添加控件的资源(如对话框).右键单击.插入ActiveX控件.调整你需要的控件属性并记录ID 二.在项目中添加播放声音的类 点击菜单中的项目.添 ...

  5. C++ dynamic_cast实现原理

    dynamic_cast是一个操作符,其用法不再赘述.查看汇编码可以发现实际调用的是这个函数__RTDynamicCast,其内部实现如下: rtti.h: #pragma once extern & ...

  6. mysql入库中文乱码问题

    mysql> show variables like '%char%';+--------------------------+----------------------------+| Va ...

  7. 初探ListView和Adapter

    关于Android Adapter(适配器),参考Devin Zhang’s blog.简单的说,Adapter起到的作用是使得前端的显示和后端的数据能够适配,用以下代码作为例子 1234567891 ...

  8. 10-2[RF] OOB validation

    main idea: 在使用bootstrap生成gi的训练集时,会有一部分数据没有被选中,使用这一部分数据(OOB)进行validation. 1.数据没有被选中的概率 假设训练集大小为N,使用bo ...

  9. HDOJ1166 敌兵布阵

    赤裸裸的线段树,借个模板,改写一下即可. 代码: #include<iostream> #include<cstdio> #include<stdio.h> #in ...

  10. float

    .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: b ...