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. jquery的extend和fn.extend的使用说明

    jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”.jQuery类的实例可以使用这个“成员函数”. jQuery为开发 ...

  2. linux下c程序调用reboot函数实现直接重启【转】

    转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...

  3. PHP 日期格式:yyyy-MM-dd'T'HH:mm:ss.SSSZ 的写法

    今日在写一个接口是,其中有一个时间参数的格式是 yyyy-MM-dd'T'HH:mm:ss.SSSZ 查了一下最后的SSSZ SSS毫秒 Z代表时区 'T' 就是固定字符T,也有的指的是任意字符,本接 ...

  4. URAL1133. Fibonacci Sequence(二分)

    1133 刚开始还用记忆化推了下公式 后来发现数是非常大的 二分 然后就是精度错误 中间值会很大 乱七八糟的改 #include <iostream> #include<cstdio ...

  5. Photoshop图层混合模式计算公式大全(转)

    混合模式可以将两个图层的色彩值紧密结合在一起,从而创造出大量的效果.在这些效果的背后实际是一些简单的数学公式在起作用.下面我将介绍photoshop cs2中所有混合模式的数学计算公式.另外还介绍了不 ...

  6. window-messager(消息框)

    所有的消息框都是异步的.用户可以在交互消息之后使用回调函数去处理结果或做一些自己需要处理的事情. 一.alert(警告框) <script type="text/javascript& ...

  7. Uva 10382 (区间覆盖) Watering Grass

    和 Uva 10020几乎是一样的,不过这里要把圆形区域转化为能够覆盖的长条形区域(一个小小的勾股定理) 学习一下别人的代码,练习使用STL的vector容器 这里有个小技巧,用一个微小量EPS来弥补 ...

  8. HDU 1574 RP问题

    如果说难的话,难就难在对阶段的划分. 这又是一道对值域空间进行分段的题目. 因为rp有正有负,所以将整个数组向右平移10000个单位长度 l和r分别是rp可能的最小值 因为b是“门槛”,所以如果 发生 ...

  9. 堆Heap

    #pragma once#include <vector> // 小堆template<class T>  //仿函数struct Less{       bool opera ...

  10. smarty分页模板(用模板语法写分页)

    分页是一个我们经常要用到的.比较基本的小功能,你可以通过定义一个方法或类来对它进行封装.重用.而本文则是通过利用smarty独有的语法,以模版的方式进行封装,从而达到同样的目的. 下面开始具体实现步骤 ...