一维数组

来源:互联网 发布:查看数据库命令 编辑:程序博客网 时间:2024/06/08 19:58

1. 以指针的方式访问一维数组

int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=NULL;p=a;//地址值           元素值p==&a[0];       *p==a[0]p+1==&a[1];     *(p+1)==a[1];p+2==&a[2];     *(p+2)==a[2];p+3==&a[3];     *(p+3)==a[3];p+4==&a[4];     *(p+4)==a[4];p+5==&a[5];     *(p+5)==a[5];p+6==&a[6];     *(p+6)==a[6];p+7==&a[7];     *(p+7)==a[7];p+8==&a[8];     *(p+8)==a[8];p+9==&a[9];     *(p+9)==a[9];

a是数组的内存基址,内存的直接地址不能被修改。即不能进行a=a+1;操作。

2. 指针数组
指针数组:数组的每一个元素都是指针变量。指针数组的每一个元素都必须是同一类型的指针。
指针数组的声明:
数据类型 * 标识符[常量表达式];

int *p1[3];//声明了一个int类型的指针数组p1,其中每个元素都是一个指向int型的数据指针。int a=1,b=2,c=3;p1[0]=&a;p1[1]=&b;p1[2]=&c;

这里写图片描述

3. 指向数组的指针数组

#include<iostream.h>void main(){ double aa [2] = { 1.1, 2.2 } ;  double bb [2] = { 3.3, 4.4 } ;  double cc [2] = { 5.5, 6.6 } ;  double ( * pf [3] ) [2] ;  /*  fp是长度为3的数组,元素是指针。  但是,指针的关联类型是长度为2的浮点型数组 double[2]    */  pf [0] = & aa ;         pf [1] = & bb ;   pf [2] = & cc ;         for ( int i = 0 ;  i < 3 ;  i ++ )    { for ( int j = 0 ;  j < 2 ;  j ++ )          cout << * ( * pf [ i ] + j  ) << "  " ;       cout << endl ;    }}//1访问数据元素fp[i]  i=0,fp[i]==&aa//2访问对象*fp[i]   *pf[i]==aa//3地址偏移*fp[i]+j j==1,*fp[i]+j==aa+j//4访问数据*(fp[i]+j)   *(fp[i]+j)==*(aa+j)==aa[j]

这里写图片描述