-
数组指针(二维数组的指针)
添加时间:2013-5-3 点击量:1 #include <iostream>
2
3 using namespace std;
4
5
6 int main()
7 {
8 int v[2][2]={{1,2},{3,4}};
9 cout<<v = <<v<<endl;
10 cout<<v = <<v<< &v = <<&v<<endl;
11 cout<<v+1 = <<v+1<<endl;
12 cout<<(v+1) = <<(v+1)<< &v[1] = << &v[1]<<endl;
13 cout<<v[0] = <<v[0]<< &v[0] = << &v[0]<<endl;
14 cout<<endl;
15
16 cout<<v = <<v<<endl;
17 cout<<(v+1) = <<(v+1)<<endl;
18 cout<<(v+1) = <<(v+1)<<endl;
19 cout<<(v[0]+1) = <<(v[0]+1)<<endl;
20 cout<<(v[1]) = <<(v[1])<<endl;
21
22 return 0;
23 }运行成果为:
v = 0012FF50
v = 0012FF50 &v = 0012FF50
v+1 = 0012FF54
(v+1) = 0012FF58 &v[1] = 0012FF58
v[0] = 0012FF50 &v[0] = 0012FF50v = 1
(v+1) = 3
(v+1) = 2
(v[0]+1) = 2
(v[1]) = 3由此看出,v默示数组首地址,v默示第一行数组的首地址,那么v+1则默示在数组第一行一个元素根蒂根基上移动sizeof(int)。而v+1默示移动一个数组大小,移动到第二行的首个元素。即,对于一个二维数组来说,v,v+1都是对于二维数组而言的,在其上的移动操纵是以行动单位。若想获得元素的值,必须解引用两次。解引用一次,把它们转换为一个一维数组。
同样的,v[0],v[1]默示第一行,第二行首元素地址。v[0],v[1]可以看做一个一维数组,他们是响应行的首地址。
这里趁便提一下,对于一维数组来说,数组名本身就是指针,在加一个&,就变成了双指针,这里的双指针就是二维数组,加1,就是数组整体加一行,即最后一个元素的下一个元素(固然并不存在)。
例如:
1 int a[]={1,2,3};
2 int ptr=(int)(&a+1);
3 cout<<(ptr-1)<<endl;输出成果为:3.
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。