欢迎来到天天文库
浏览记录
ID:38792472
大小:46.71 KB
页数:4页
时间:2019-06-19
《指针访问多维数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#includeintmain(){usingnamespacestd;//创建一2×3×4的int型数组sz,并初始化intsz[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},{{13,14,15,16},{17,18,19,20},{21,22,23,24}}};//采用数组名式用法声明指针pSZint(*pSZ)[3][4]=sz;for(inti=0;i<2;i++)for(intj=0;j<3;j++)for(intk=0;k<4;k++)cout<<*(*(*(pSZ+i)
2、+j)+k)<<"";cout<3、的数据也就是sz里存放的数据了,[3][4]就是告诉编译器,这个指针是指向维数为3*4的二维数组的,这样的话,pSZ+i相当于sz+i,一下子向后面指i*3*4个字节偏移处...9.3.4多维数组的指针二维数组:staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};理解为:有三个元素a[0]、a[1]、a[2],每一个元素代表一行,每一个元素是一个包含4个元素的数组。数组名a代表:整个二维数组的首地址,也是元素a[0][0]的地址,同时代表第一行元素的首地址。a+1表示第二行元素的首地址,也4、是元素a[1][0]的地址。a+2表示第三行元素的首地址,也是元素a[2][0]的地址。设数组的首地址是2000,则有a等于2000。第一行4个元素,占8字节,因此第二行的首地址是2008,即a+1等于2008。第二行4个元素,占8字节,因此第三行的首地址是2016,即a+2等于2016。由于把a[0]、a[1]、a[2]看成一维数组,它们代表各自数组的首地址,即:a[0]~&a[0][0](~表示“相当于”)a[1]~&a[1][0]a[2]~&a[2][0]根据一维数组的表示方法,有:a[0]+1:表示一维数组中第二个元素,~&a[0][1]a5、[0]+2:~&a[0][2]a[1]+1:~&a[1][1];综上所述,二维数组a的地址用下图说明(教材p180,图9.25):已知某元素的指针后,可以用*运算符访问该元素。例:*(a[1]+2)=a[1][2]=13关于二维数组各种指针表示法,仅要求到此,教材p180第三行~p187[本节尾],除[例9.12]外,不要求。(讲述二维数组元素的另一种表述)。 [例9.12]用指针变量输出数组元素的值。main(){staticinta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int*p; for(p=a6、[0];p7、;i<3;i++) { for(j=0;j<4;j++)printf("%4d",a[i][j]); printf(""); }} 这种方式虽然清晰,但需进行两层循环,且为了计算每一个元素a[i][j]的位置,均进行i*4+j的运算,执行效率非常低。
3、的数据也就是sz里存放的数据了,[3][4]就是告诉编译器,这个指针是指向维数为3*4的二维数组的,这样的话,pSZ+i相当于sz+i,一下子向后面指i*3*4个字节偏移处...9.3.4多维数组的指针二维数组:staticinta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};理解为:有三个元素a[0]、a[1]、a[2],每一个元素代表一行,每一个元素是一个包含4个元素的数组。数组名a代表:整个二维数组的首地址,也是元素a[0][0]的地址,同时代表第一行元素的首地址。a+1表示第二行元素的首地址,也
4、是元素a[1][0]的地址。a+2表示第三行元素的首地址,也是元素a[2][0]的地址。设数组的首地址是2000,则有a等于2000。第一行4个元素,占8字节,因此第二行的首地址是2008,即a+1等于2008。第二行4个元素,占8字节,因此第三行的首地址是2016,即a+2等于2016。由于把a[0]、a[1]、a[2]看成一维数组,它们代表各自数组的首地址,即:a[0]~&a[0][0](~表示“相当于”)a[1]~&a[1][0]a[2]~&a[2][0]根据一维数组的表示方法,有:a[0]+1:表示一维数组中第二个元素,~&a[0][1]a
5、[0]+2:~&a[0][2]a[1]+1:~&a[1][1];综上所述,二维数组a的地址用下图说明(教材p180,图9.25):已知某元素的指针后,可以用*运算符访问该元素。例:*(a[1]+2)=a[1][2]=13关于二维数组各种指针表示法,仅要求到此,教材p180第三行~p187[本节尾],除[例9.12]外,不要求。(讲述二维数组元素的另一种表述)。 [例9.12]用指针变量输出数组元素的值。main(){staticinta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int*p; for(p=a
6、[0];p7、;i<3;i++) { for(j=0;j<4;j++)printf("%4d",a[i][j]); printf(""); }} 这种方式虽然清晰,但需进行两层循环,且为了计算每一个元素a[i][j]的位置,均进行i*4+j的运算,执行效率非常低。
7、;i<3;i++) { for(j=0;j<4;j++)printf("%4d",a[i][j]); printf(""); }} 这种方式虽然清晰,但需进行两层循环,且为了计算每一个元素a[i][j]的位置,均进行i*4+j的运算,执行效率非常低。
此文档下载收益归作者所有