一维指针
地址值
a 相当于 & a[ 0 ]
a + 1 相当于 & a[ 1 ]
a + 2 相当于 & a[ 2 ]
a + i 相当于 & a[ i ]
元素值
a [ 0 ] Û * a
a [ 1 ] 相当于 * ( a + 1 )
a [ 2 ] 相当于 * ( a + 2 )
a [ i ] 相当于 * ( a + i )
二维
用指针变量访问数组
#include<iostream>
using namespace std ;
int main()
{ int a[] = { 1, 3, 5, 7, 9 } , i , *p ;for( p = a; p < a+5 ; p ++ )//p=a意思是p = &a[0];a+5意思是地址偏移 cout << "a[" << p-a << "]=" << *p << '\t';//*p间址访问元素 cout << endl;for( p = a, i = 0 ; i < 5; i ++ ) cout << "a[" << i << "]=" << p[i] << '\t';//p[i]指针变量下标方式访问元素 ,其中[ ] 动词相当于(p+i)偏置运算,访问对象cout << endl ;
}
指向基本数据类型的指针数组
#include<iostream>
using namespace std ;
int main()
{ int a = 11 , b = 22 , c = 33 , * pi [ 3 ] ;pi [ 0 ] = &a ;pi [ 1 ] = &b ; pi [ 2 ] = &c ;for( int i = 0; i < 3 ; i ++ ) cout << *pi [ i ] << " ";
}
二维
#include<iostream>
using namespace std ;
int main()
{ int a[3] [5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } ;int * p ;for ( p = a [ 0 ] ; p < a[ 0 ] + 15 ; p ++ )//可以改为 p = a 吗?不能 a 是逻辑上的二级指针,不能把 a 赋给一级指针变量//可以改为 p = a[0][0] 吗? 不能a[0][0] 是数组元素值不能赋给指针变量//可以改为 p = &a[0][0] 吗?可以 cout << *p << " " ;cout << endl ;for ( p = * a ; p < *a + 15 ; p ++ )cout << *p << " " ;cout << endl ;for ( int i = 0 ; i < 3 ; i ++ ){ for ( int j = 0 ; j < 5 ; j ++ )cout << * ( a [ i ] + j ) << " " ;cout << endl ;}
}