#include #include #pragma comment(lib,"Ws2_32.lib")usin"> C++一维数组和指针的关系总结 - 11GX
首页 > C++一维数组和指针的关系总结

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
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<


用*(a+i)来输出

#include
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<


用*(p+i)来输出

#include
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<

关于*p++

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

#include
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<


等价于

#include
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<


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

#include
using namespace std;
int main(){int a[10]={1,2,3,4,5,6,7,8,9,10};cout<<"Please input 10 intergers: "<


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



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

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 使用count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。 使用find,返回的是被查找元素的位置,没有则返回map.end()。 #include #include #include #include

  • 1 //改代码用于精确计算除法的位数,比如求无限循环小数的循环节 2 //求循环节时,需要定义一个数组,用与标记是否有相同的余数,若是遇到时,结束循环,即得到循环节 3 #include 4 using namespace std; 5 6 int main() { 7 int a, b...

  • 机器学习简单代码示例    //在gcc-4.7.2下编译通过。 //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include using namespace std; void input(int &oper,const bool meth) {//meth为true...

  • 在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数。 函数原型: C++: Mat Mat::reshape(int cn, int rows=0) const 参数比较少,但设置的时候却要千万小心。 cn: 表示通道数(channels), 如果设为0,...

  • // WindowsSocketServer.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #pragma comment(lib,"Ws2_32.lib")usin...