二级指针和二位数组

一、

  • 学一维数组时,我们已经知道 数组名这个一维数组首地址,
  • 同时这个数组名也是一位数组中第一个元素首地址
  • 通过解引用 *  数组名就能得到第一个元素的的

 

 

二、

 

int  TwoArray[2][2] = 

 

{

 

  { 0 ,1 },

 

  { 2 ,3 }

 

}

 

 

解释:

 

 

 

TwoArray

 

  • TwoArray一个内涵2个元素数组
  • TwoArray[2]
    • 每个元素内含两个整型元素的一位数组
    • TwoArray[0]
      •  { 0 ,1 } 
    • TwoArray[1]
      •  { 2 ,3 } 

 

TwoArray[0][2]

 

TwoArray[1][2]

 

 

 1.

所以TwoArray数组名是TwoArray的第一元素首地址 

即 TwoArray == &TwoArray[0]

 

        TwoArray[0] = { 0,1 }

        TwoArray[1] = { 2,3 }

2.

{ 0,1 }是TwoArray 的第一个元素,也就是TwoArray[0],

所以 TwoArray代表的地址 是 { 0,1 }地址

 eg:

#include <iostream>
using namespace std;
int main()
{
int TwoArray[2][2] =
{
{ 0 ,1 }, //TwoArray的第一个元素
{ 2 ,3 } //TwoArray的第二个元素

};

int(*p)[2];
p = TwoArray;
//TwoArray是一个存放2个元素(一维数组)的数组,
//TwoArray 存放第一个元素首地址的地址
//通过对 TwoArray 进行解引用 *TwoArray 操作,取出里面第一个元素首地址
//再对 *TwoArray 进行解引用 *(*TwoArray)操作,取出里面第一个元素首地址里面的值

//TwoArray+1 存放第二个元素首地址的地址
//通过对 TwoArray+1 进行解引用 *(TwoArray+1) 操作,取出里面第二个元素首地址
//再对 *(TwoArray+1) 进行解引用 *(*(TwoArray+1))操作,取出里面第二个元素首地址里面的值

cout << "TwoArray[0][0] = " << *(*p) << endl;
cout << "TwoArray[0][0] = " << *((*p)+1) << endl;

cout << "TwoArray[0][0] = " << *(*(p +1)) << endl;
cout << "TwoArray[0][0] = " << *((*(p + 1)) + 1) << endl;


system("pause");
return 0;
}

 

 

 

 

 

 

 

 

posted @ 2022-04-24 16:01  雾枫  阅读(27)  评论(0编辑  收藏  举报