二级指针和二位数组
一、
- 学一维数组时,我们已经知道 数组名就是这个一维数组的首地址,
- 同时这个数组名也是一位数组中第一个元素的首地址。
- 通过解引用 * 数组名就能得到第一个元素的的值
二、
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;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性