(壹)数组名相当于指向数组第三个因素的指针永利官方网站,(二)&E也正是把E的总理范围上升了1个品级

叁条规律:

(一)数组名相当于指向数组首个因素的指针

(2)&E也正是把E的管辖范围上涨了3个级别

(三)*E相当于把E的总统范围下落了八个等级

2维数组的指针指向记录,贰维数组指针指向

在意要点:

(一)&和*的事先级要大于+和-

(贰)指向数组的指针的输出为那些数组的开头地址

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
 6     cout << "a=" << a << endl;
 7     cout << "&a[0]=" << &a[0] << endl << endl;
 8 
 9     cout << "a+1=" << a + 1 << endl;
10     cout << "&a[0]+1=" << &a[0] + 1 << endl << endl;
11 
12     cout << "a[1]=" << a[1] << endl;
13     cout << "&a[1]=" << &a[1] << endl;
14     cout << "*(a+1)=" << *(a + 1) << endl << endl;
15 
16     cout << "&a[0][0]+1=" << &a[0][0] + 1 << endl;
17     cout << "*a+1=" << *a + 1 << endl << endl;
18 
19     cout << "&a=" << &a << endl;
20     cout << "&a+1=" << &a + 1 << endl;
21     return 0;
22 }

输出结果:(序号不在输出之列,只是为了方便分析)

  1. a=009EFC18
    2.
    &a[0]=009EFC18

3.
a+1=009EFC28
4.
&a[0]+1=009EFC28

5.
a[1]=009EFC28
6.
&a[1]=009EFC28
7.
*(a+1)=009EFC28

8.
&a[0][0]+1=009EFC1C
9.
*a+1=009EFC1C

10.&a=009EFC18
11.&a+1=009EFC48

结果分析:

一.a指向1维数组a[0]

2.a[0]针对一维数组a[0]的第三个成分,用&进行升高指向一维数组a[0]

 

三.a指向一维数组a[0],因为1维数组a[0]的管辖范围为a[0][0]、a[0][1]、a[0][2]、a[0][3],+1后指向壹维数组a[1]

4.&a[0]针对1维数组a[0],+一后指向壹维数组a[1]

 

5.a[1]针对壹维数组a[1]的首先个成分a[1][0]

6.a[1]用&进级后指向数组a[1]

柒.a+一指向数组a[1],用*降职后后指向一维数组的首先个成分a[1][0]

 

8.&a[0][0]指向a[0][0],+1后指向a[0][1]

9.*a指向1维数组a[0]的首先个成分a[0][0],+一后指向第1个成分a[0][1]

 

拾.&a指向二维数组a[3][4],输出时输出它的发轫地址

1壹.&a的总理范围为a[0][0]……a[2][3],举办+壹后指向2维数组a[3][4]此后的地方

三条规律:

(壹)数组名约等于指向数组第一个成分的指针

(二)&E也便是把E的总理范围上涨了贰个等级

(三)*E相当于把E的总理范围下跌了二个等级

只顾要点:

(一)&和*的先期级要压倒+和-

(二)指向数组的指针的输出为这几个数组的序幕地址

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
 6     cout << "a=" << a << endl;
 7     cout << "&a[0]=" << &a[0] << endl << endl;
 8 
 9     cout << "a+1=" << a + 1 << endl;
10     cout << "&a[0]+1=" << &a[0] + 1 << endl << endl;
11 
12     cout << "a[1]=" << a[1] << endl;
13     cout << "&a[1]=" << &a[1] << endl;
14     cout << "*(a+1)=" << *(a + 1) << endl << endl;
15 
16     cout << "&a[0][0]+1=" << &a[0][0] + 1 << endl;
17     cout << "*a+1=" << *a + 1 << endl << endl;
18 
19     cout << "&a=" << &a << endl;
20     cout << "&a+1=" << &a + 1 << endl;
21     return 0;
22 }

输出结果:(序号不在输出之列,只是为着方便分析)

  1. a=009EFC18
  2. &a[0]=009EFC18

  3. a+1=009EFC28

  4. &a[0]+1=009EFC28

  5. a[1]=009EFC28

  6. &a[1]=009EFC28
  7. *(a+1)=009EFC28

  8. &a[0][0]+1=009EFC1C

  9. *a+1=009EFC1C

10.&a=009EFC18
11.&a+1=009EFC48

结果分析:

一.a指向1维数组a[0]

2.a[0]针对1维数组a[0]的率先个要素,用&实行晋级指向一维数组a[0]

 

三.a指向一维数组a[0],因为壹维数组a[0]的总统范围为a[0][0]、a[0][1]、a[0][2]、a[0][3],+1后指向1维数组a[1]

4.&a[0]本着1维数组a[0],+一后指向一维数组a[1]

 

5.a[1]本着一维数组a[1]的首先个元素a[1][0]

6.a[1]用&晋级后指向数组a[1]

7.a+壹指向数组a[1],用*降职后后指向一维数组的首先个成分a[1][0]

 

8.&a[0][0]指向a[0][0],+1后指向a[0][1]

9.*a指向1维数组a[0]的率先个成分a[0][0],+一后指向第二个成分a[0][1]

 

十.&a指向2维数组a[3][4],输出时输出它的苗头地址

1壹.&a的管辖范围为a[0][0]……a[2][3],进行+壹后指向2维数组a[3][4]从此的地址

http://www.bkjia.com/cjjc/1231555.htmlwww.bkjia.comtruehttp://www.bkjia.com/cjjc/1231555.htmlTechArticle二维数组的指针指向记录,二维数组指针指向
三条规律: (一)数组名相当于指向数组第2个元素的指针
(贰)E也正是把E的管辖范围上…

相关文章