- 论坛徽章:
- 0
|
指针与数组
A.一维数组
数组实际上仅仅是一种表达形式,在内部是被重新转换成指针的。
int ia0[5];
int ia1[5]={0,1,2,3,4};
访问方式:
ia1[3] *(ia1+3)
这两种都可以访问到数组ia1位置3的元素。
int * pi=ia1;
同样也可以
*(pi+3)
进行访问数组ia1位置3的元素。
B.多维数组
a.多维数组定义与初始化
int ia2[3][4];
int ia3[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
b.指针访问
ia3 &ia3[1] 表示一个指向一维四元的数组指针
&ia3 表示一个指向二维3行4列的数组指针
ia3[1] &ia3[1][2] 表示一个指向int类型的指针
c.示例
int * ip;
int (*ap)[4]; //定义指向一维四行的数组指针
int (*ap2)[3][4]; //定义指向二维三列四行的数组指针
ip=ia3[1]; //指向二行一列元素
ip=&ia3[1][0]; //指向二行一列元素
ap=ia3; //指向一行的一维四列数组
ap=&ia3[1]; //指向二行的一维四列数组
cout<<(*ap)[2]<<endl; //12
cout<<ap[1][2]<<endl; //22
ap2=&ia3; //指向二维三列四行的数组指针
cout<<(*ap2)[1][2]<<endl; //12
d.数组连续存储在二维数组中就体现的更明显了
ip=&ia3[0][0];
*(ip+10)将访问到ia3[2][2];
粗略的小结一下,表达不好,还望各方人士多多指点
[ 本帖最后由 sww12081234 于 2008-1-19 15:17 编辑 ] |
|