pre{
line-height:1;
color:#2f88e4;
background-color:#e9ffff;
font-size:16px;}.sysFunc{color:#3d7477;font-style:italic;font-weight:bold;}
.selfFuc{color:#a0b684;}
.bool{color:#86ddd8;}
.condition{color:#94e269;font-weight:bold;}
.key{color:#ae0bfd;}
.var{color:#e81cb6;font-style:italic;}
.Digit{color:#ef09ef;font-weight:bold;}
.includePre{color:#e4882f;}
.operator {color:#96d186;font-weight:bold;}

试验一:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4];
for(p=&a[0];p<&a[0]+3;p++)
cout<<&p<<endl;

0012FF40

0012FF40

0012FF40

for(p=&a[0];p<&a[0]+3;p++)
cout<<p<<endl;

0012FF44

0012FF54

0012FF64

for(p=&a[0];p<&a[0]+3;p++)
cout<<*p<<endl;

0012FF44

0012FF54

0012FF64

for(p=&a[0];p<&a[0]+3;p++)
cout<<**p<<endl;

1

5

9

总结如下:

   p是一个二级指针
   &p 是保存这个二级指针的单元地址 :0012FF40
   p的值为:0012FF44
   *p 是p所指向单元的内容,因为p是二级指针而且p指向一个组合单元(由四个整形共同组成),因此 编译器将 *p解释为组合单元中第一个元素的地址:0012FF44
   **p 是第一行第一个元素的值 1
   这个二级指针是很特殊的,因为: p和*p的值都是相同的 但是编译器会对他们做出不同的解释,p 解释为行的首地址,操作单位为行, *p 解释为行的第一个元素的地址, 操作单位为元素
   同理 二维数组名a,也是一个二级指针
   a 是行的首地址
   *a 是行的第一个元素的首地址
  

试验二:

   for(int i=0;i<12;i++)
   cout<<**a<<endl;

1

1

1

1

1

1

1

1

1

1

1

1

  for(int i=0;i<12;i++)
  cout<<**(a+i)<<endl;

1

5

9

4232719

1447838469

1245116

476002356

4269248

2088857559

-2141931795

2088999592

0

for(int i=0;i<12;i++)
cout<<*(*a+i)<<endl;

1

2

3

4

5

6

7

8

9

10

11

12

for(int i=0;i<12;i++)
cout<<&a<<endl;

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

for(int i=0;i<12;i++)
cout<<a<<endl;

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

for(int i=0;i<12;i++)
cout<<*a<<endl;

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

0012FF44

for(int i=0;i<12;i++)
cout<<**a<<endl;

1

1

1

1

1

1

1

1

1

1

1

1

由上可看出 数组名是一个特殊的指针 因为&a 与 a 的值相同 , 也就是系统不为数组名另分配一个地址空间

  另外,数组名也是一个二级指针

本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。

 

int (*p)[4] p 是二级指针 二维数组 二级指针 .xml的更多相关文章

  1. C++笔记-数组指针/二维数组转换指针

    参考资料: 1. 作者 BensonLaur  :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...

  2. [C++]数组与指针[二维数组与指针]

  3. 二维数组和指针(C语言)

    二维数组和指针 二维数组和指针1.二维数组和数组元素的地址若有以下定义:int *p, a[3][4]; 1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的 ...

  4. C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法

    本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...

  5. C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数

    1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...

  6. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  7. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  8. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  9. C指针 指针和数组 二维数组的指针 指针应用

    直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...

随机推荐

  1. Android AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

    AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的用法:(1)在指定时长后执行某项操 ...

  2. 【PPT分享】五类常见的用户分析场景

    以下是参加一次沙龙的PPT,分享给大家.关于如何做用户分析的5类场景. 引言 借助“多渠道营销分析”,探究用户从哪里来?如何来? 平台和渠道矩阵 平台和渠道矩阵 跨平台和渠道访问特征分析 多渠道来源分 ...

  3. Jquery正则表达式公式.例子

    1.非负整数         /^\d+$/     2.正整数           /^[0-9]*[1-9][0-9]*$/     3.非正整数       /^((-\d+)|(0+))$/  ...

  4. Android之开发杂记(二)

    1.android 4.0 以后 高版本没有虚拟菜单键

  5. git环境搭建

    Linux kernel  的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...

  6. Java 互联网工程师要具备哪些技能或技术?

    Java技术的世界是个无底洞,永远也学不完,不废话了,我就简单的说一下自己的看法(偏重Java方面,什么html.css.js这些不在这次的讨论之内,虽然JavaServer开发有时候也都需要懂点): ...

  7. Android电源管理-休眠简要分析

    一.开篇 1.Linux 描述的电源状态 - On(on)                                                 S0 -  Working - Standb ...

  8. ubuntu中apt-get安装与默认路径

    一.apt-get 安装 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb或者直接双击此文件 dpkg 是Debian ...

  9. hdu4003Find Metal Mineral(树形DP)

    4003 思维啊 dp[i][j]表示当前I节点停留了j个机器人 那么它与父亲的关系就有了 那条边就走了j遍 dp[i][j] = min(dp[i][j],dp[child][g]+dp[i][j- ...

  10. 使用Jenkins构建持续集成环境

    简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...