标签:[1] htm 中序 关于 stream 组成 数据 相同 结果
注意:数组指针的定义,与指针数组的区别
转载:http://c.biancheng.net/cpp/biancheng/view/162.html
指向多维数组元素的指针变量
① 指向数组元素的指针变量
【例6.7】输出二维数组各元素的值。这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值。
#include <iostream> using namespace std; int main( ) { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; //p是基类型为整型的指针变量 for(p=a[0];p<a[0]+12;p++) cout<<*p<<" "; cout<<endl; return 0; }
运行结果如下:
1 3 5 7 9 11 13 15 17 19 21 23
关于指向数组元素的指针变量的几点说明:
②指向由m个元素组成的一维数组的指针变量
可以定义一个指针变量,它不是指向一个整型元素,而是指向一个包含m个元素的一维数组。这时,如果指针变量p先指向a[0](即p=&a[0]),则p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,见图6.17。
【例6.8】输出二维数组任一行任一列元素的值。
#include <iostream> using namespace std; int main( ) { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i,j; cin>>i>>j; p=a; cout<<*(*(p+i)+j)<<endl; return 0; }
运行情况如下:
2 3↙
23
由于执行了“p=a”,使p指向a[0]。因此p+2是二维数组a中序号为2的行的起始地址(由于p是指向一维数组的指针变量,因此p加1,就指向下一个一维数组),见图6.18。*(p+2)+3是a数组2行3列元素地址。*(*(p+2)+3)是a[2][3]的值。
3) 用指向数组的指针作函数参数
一维数组名可以作为函数参数传递,多维数组名也可作函数参数传递。
【例6.9】输出二维数组各元素的值。题目与例6.7相同,但本题用一个函数实现输出,用多维数组名作函数参数。
#include <iostream> using namespace std; int main( ) { void output(int (*p)[4]); //函数声明 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; output(a); //多维数组名作函数参数 return 0; } void output(int (*p)[4]) //形参是指向一维数组的指针变量 { int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) cout<<*(*(p+i)+j)<<" "; cout<<endl; }
运行情况如下:
1 3 5 7 9 11 13 15 17 19 21 23
标签:[1] htm 中序 关于 stream 组成 数据 相同 结果
原文地址:http://www.cnblogs.com/panlangen/p/7989520.html