对于数组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]并没有定义。

转载于:https://www.cnblogs.com/zhezh/p/3773424.html

C++一维数组和指针的关系总结相关推荐

  1. 一维数组和指针的关系

    数组名是一个指针常量,表示数组第一个元素的的起始地址. 如 int a[5];  a表示数组第一个元素a[0]的起始地址&a[0]. 一 引用数组元素的方法: ①用数组下标引用数组元素 数组a ...

  2. c语言数组与指针的基础知识,C语言学习笔记之数组与指针的关系

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

  3. c++ 一维数组长度_每天一点C / 一维数组和指针

    哈喽,我是老吴,继续记录我的学习心得. 每天一点系列是我对微习惯的践行.现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己 ...

  4. C语言之指向一维数组的指针

    int array[5] = {1, 2, 3, 4, 5}; // 定义数组 int *intptr = array; // 定义指向数组元素的指针 int (*arrayptr)[5] = &am ...

  5. C++中数组和指针的关系(区别)详解

    C++中数组和指针的关系(区别)详解 本文转自:http://c.biancheng.net/view/1472.html 博主在阅读后将文中几个知识点提出来放在前面: 没有方括号和下标的数组名称实际 ...

  6. C语言-一维数组与指针

    目录 1 用指针访问数组的三种方式 2 一维数组做函数的参数 2.1 方法一 2.2 方法二 3 指针自增自减运算 1 用指针访问数组的三种方式 #include <stdio.h>int ...

  7. int转char数组_C语言学习第22篇---数组和指针的关系剖析

    数组的本质: 数组是一段连续的内存空间 数组的空间大小为sizeof(array_type)*array_size 数组名可以看做指向数组的第一个元素的常量指针(只是理解,其实是错的,参见<征服 ...

  8. 十一:数组和指针的关系?

    1. 数组和指针的区别: 概念: 数组:数组是用于存储多个相同类型数据的集合,数组名是首元素的地址. 指针:指针相当于一个变量,但是它和普通变量不一样,它存放的是其他变量在内存中的地址,指针名指向了内 ...

  9. c语言memset清空指向数组的指针_C语言中数组和指针的关系

    数组的数组名其实可以看作一个指针.看下例: 1.    int array[10]={0,1,2,3,4,5,6,7,8,9},value; 2.    value=array[0]; //也可写成: ...

最新文章

  1. c#百度排名点击器编写 及webser 填表.
  2. mysql 随机记录 newid(),order by newid() 各种数据库随机查询的方法
  3. Java中的低GC:使用原语而不是包装器
  4. 单片机中存储器扩展位地址线怎么算_51单片机CPU结构各部件的原理详细分析
  5. Android学习笔记之(一)开发环境搭建
  6. mongodb 的命令操作(转)
  7. Graft货币(GRFT)结点搭建
  8. js 按给定数组的顺序给数组排序_JavaScript中如何如何给数组以及数组对象根据value值进行排序。...
  9. Linux上SQL Server 2019和Ubuntu上的Docker容器
  10. 设计算法之分治法(补充)
  11. 中国人工智能趋势报告(完整版)
  12. 伪造邮件***,社工钓鱼,你中招了吗【一】
  13. 天池大数据竞赛——糖尿病遗传风险预测赛后总结(二)
  14. Beyond Compare的文档比较工具的设置
  15. A股数据日级前复权数据补全
  16. word2vec的pytorch实现
  17. Log4j2写日志的艺术
  18. 计算机专业术语简单释义
  19. 外贸推广方式有哪些,外贸推广怎么做
  20. TaskSnapshot保存应用画面截图快照的处理过程

热门文章

  1. 全球及中国云厨房(仅限外卖的餐厅)行业前景态势与投资决策建议报告2022版
  2. 全球及中国农业保险市场营销状况与运营价值分析报告2022版
  3. 中国冶金行业投资战略及未来发展形势研究报告2021版
  4. 跨国婚姻登记指南是怎样的一个流程呢??
  5. java邮箱找回密码_Spring实现简单的邮箱找回密码功能
  6. 粤桂粤黔协作签约-丰收节交易会·李喜贵:谋定一县一园产业园
  7. 济南长清区谋定特色展销中心 对话中国农民丰收节交易会
  8. 配置IIS服务器提供APP文件下载
  9. AFN中请求序列化的设置
  10. Java中创建对象的5种方式 -[转] http://www.codeceo.com/article/5-ways-java-create-object.html...