论坛积分策略 论坛VIP区开放申请 我爱电脑万人签名活动 原声大碟520欢迎你 广告位招租
发新话题
打印

[C++] C/C++中数组和指针类型的关系

C/C++中数组和指针类型的关系

 对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识!  一个整数类型数组如下进行定义:
$ T6 j( m' @% H9 A2 I打造最好的电脑自学交流论坛int a[]={1,2,3,4}; www.520diannao.com8 ?" j4 u4 E2 L7 `1 B  _
  如果简单写成:www.520diannao.com: \* D( V% N9 w5 R0 O4 m, O4 Y0 J1 {
a;//数组的标识符名称电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 `5 l# W3 V7 a/ k1 a  g
  这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这个例子中它的类型就是int* 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 D2 t4 A" v0 F2 x$ E/ Q9 A

9 A1 Z1 V. M. o! n电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  如果我们想访问第二个元素的地址我们可以写成如下的两种方式:
, m1 d. K! S2 W7 I' ~www.520diannao.com&a[1];  " k! j9 V, l+ r$ R& `6 |
  
$ w, [) O1 \  N, i我爱电脑技术论坛a+1//注意这里的表示就是将a数组的起始地址向后进一位,移动到第二个元素的地址上也就是a[0]到a[1]的过程!
4 ]2 }, A0 e/ c# z5 qwww.520diannao.com  数组名称和指针的关系其实很简单,其实数组名称代表的是数组的第一个元素的内存地址,这和指针的道理是相似的!我爱电脑技术论坛) N7 d5 [+ `, b1 }/ q7 w& x
  下面我们来看一个完整的例子,利用指针来实现对数组元素的循环遍历访问!电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 V8 U5 F# B% O5 ]
#include <iostream>  
4 g; K3 ~( D$ C& Q5 {5 _我爱电脑技术论坛using namespace std;  
. i) m9 }, L# ]+ C( q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  我爱电脑技术论坛' v1 Z- ?! V$ }1 F# E% C
void main(void)  电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 H3 b, @, q1 ]( n, p; L
{  
& V, _  x7 b% n) _我爱电脑技术社区--打造最好的电脑技术自学交流平台    int a[2]={1,2};  
: ]' r1 j+ T* A% j  ]我爱电脑技术社区--打造最好的电脑技术自学交流平台  
( A( I# }; n" E6 n3 {: Zwww.520diannao.com    int *pb=a; //定义指针*pb的地址为数组a的开始地址
, h8 ?3 T  b+ v  电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站& l  z" ]: [0 f& x! }8 i+ ~6 E
    int *pe=a+2; //定义指针*pb的地址为数组a的结束地址
% S( Z5 c* d% P  打造最好的电脑自学交流论坛4 W: ?9 X; [8 c
    cout << a << "|" << a[0] << "|" << *(a+1) << "|" << pb << "|" << *pb <<endl;    \8 v+ l. L7 k( L: {
      
0 }$ c7 G6 h5 w+ f- L3 ~, E我爱电脑技术论坛    while (pb!=pe) //利用地址进行逻辑判断是否到达数组的结束地址
. r/ V$ L6 O: g4 j: T7 b1 w5 H我爱电脑技术社区--打造最好的电脑技术自学交流平台    {  www.520diannao.com* P! ]! F1 F: {6 M( g
        cout << *pb << endl;  
# @& ^0 j- f9 X9 j/ Q- N4 b1 `我爱电脑技术论坛        pb++; //利用递增操作在循环中将pb的内存地址不断向后递增
, D) M5 P/ p/ x' ^1 |( Zwww.520diannao.com    }  # ?; Q8 M2 p3 `5 f( w: V4 j/ ]
    cin.get();  % L! P' }0 |! u7 N/ ?, r
}

TOP

发新话题