[C++程序设计]指向数组元素的指针

如果先使p指向数组a的首元素(即p=a),则:

(1) p++(或p+=1)。使p指向下一元素,即a[1]。 如果用*p,得到下一个元素a[1]的值。

(2) *p++。由于++和*同优先级,结合方向为自右而 左,因此它等价于*(p++)。作用是: 先得到p指向 的变量的值(即*p),然后再使p的值加1。例6.5(3)程
序中最后一个for语句: for(p=a;p<a+10;p++) cout<<*p;
可以改写为
for(p=a;p<a+10;) cout<<*p++;

(3) *(p++)与*(++p)作用不同。前者是先取*p值,然 后使p加1。后者是先使p加1,再取*p。若p的初值 为a(即&a[0]),输出*(p++)得到a[0]的值,而输 出*(++p)则得到a[1]的值。

(4) (*p)++表示p所指向的元素值加1,即 (a[0])++,如果a[0]=3,则(a[0])++的值为4。注意: 是元素值加1,而不是指针值加1。

(5) 如果p当前指向a[i],则
*(p--) 先对p进行“*”运算,得到a[i],再使p减1,
p指向a[i-1]。
*(++p) 先使p自加1,再作*运算,得到a[i+1]。 *(--p) 先使p自减1,再作*运算,得到a[i-1]。
将++和--运算符用于指向数组元素的指针变量十分 有效,可以使指针变量自动向前或向后移动,指向 下一个或上一个数组元素。例如,想输出a数组 100个元素,可以用以下语句:
p=a;
while(p<a+100) cout<<*p++;

p=a;
while(p<a+100) {cout<<*p;
p++;}
在用*p++形式的运算时,很容易弄错,一定要十分 小心,弄清楚先取p值还是先使p加1。

[C++程序设计]指向数组元素的指针

时间: 2024-10-13 00:56:36

[C++程序设计]指向数组元素的指针的相关文章

编程题:比较指向数组元素的指针变量和指向数组的指针变量的不同。

#include<stdio.h> void main() {int a[2][3]={1,2,3,4,5,6}; int *p1,(*p2)[3]; /*p1指向数组元素,p2指向包含3个元素的一维数组*/ p1=a[0];p2=a; /*用指向数组元素的指针变量输出二维数组元素*/ for(;p1<a[0]+6;p1++) printf("%4d",*p1); printf("\n"); /*用指向以为数组的指针变量输出二维数组元素*/ for

指向二维数组元素的指针变量

(1)指向数组元素的指针变量 例1.有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值. 编写程序 1 #include <stdio.h> 2 int main() 3 { 4 int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; 5 int *p; 6 for (p = a[0]; p < a[0] + 12; p++) //a[0]代表列指针的起点,p依次指向下一个元素 7 { 8 if ((p - a[0])%4

编程题:指向二维数组元素的指针变量。功能:已知二维数组a[2][3],输入输出全部元素。

#include<stdio.h> void main() { int a[2][3],i,j; int *p; /*用坐标法输入二维数组元素*/ for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); /*用指针法输出二维数组元素*/ p=a[0];         /*等价于p&a[0][0];*/ for(;p<a[0]+6;p++)   printf("%4d&quo

【C语言】指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8

【C语言】-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的

C语言 12-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略. 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 一.用指针指向一维数组的元素 1

【C语言】12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

学习笔记之12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

c语言之指向二维数组元素的指针变量

如何使用指针对二维数组进行遍历? 首先我们需要明确的是:二维数组在内存中是连续的,比如一个二维数组int a[2][3]={1,2,3,4,5,6},可以视作是两个一维数组构成的,即int a0[3] ={1,2,3},int a1[3] = {4,5,6},我们知道,一维数组在内存中是连续的一块内存,并且数组名a0,a1代表的就是该数组首元素的地址,而正因为二维数组的内存中的地址也是连续的,所以a1的首元素的地址就为a0数组首元素的地址+a0中元素的个数,因此,我们就可以通过让指针不断+1来访