先给出结论,便于以后查阅:

首先给出几个定义:

typedef int (*p1x4)[4];//定义数据类型,p1x4这种类型为指向含4个int元素的1维数组的指针

typedef int (*p3x4)[3][4];//定义数据类型,p3x4这种类型为指向含3x4个int元素的2维数组的指针

下面从一维数组说起:(定义:int a[4])

(1)一维数组名a是个地址,地址类型为:int *

(2)一维数组名取地址&a是个地址,地址类型同:int (*p)[4], 也即&a指向含4个int元素的一维数组

备注:a和&a,两者都是个地址,且这两个地址的数值完全相等。

再看二维数组b[3][4],这个二维数组也可以可以看成一个含3个成员的一维数组,每一个成员含有4个int元素,依次,仿照一维数组的结论,有:

(1)b[0]是个一维数组名,也是个地址,地址类型为:int *

(2)&b[0]是个地址,地址类型同:int (*p)[4], 也即&b[0]指向含4个int元素的一维数组

更进一步:

(3)b是个地址,地址类型同:int (*p)[4],也即b指向含4个int元素的一维数组

(4)&b是个地址,地址类型同:int (*p)[3][4],也即&b指向含3x4个int元素的2维数组

注意:尤其注意上面的(3),这条结论指出了:二维数组名实际上是一维数组的地址!

总结:

① 数组名,是指向它的第一个一级成员的指针

② 数组名取地址,是指向整个数组的指针

PS:所谓一级成员,举个例子,int a[5],那么数组a的一级成员就是int型变量;int b[10][5],数组b的一级成员是int [5]的一维数组

二维数组名、二维数组名取地址、二级指针相关推荐

  1. c语言——用二维数组名对二级指针赋值

    用二维数组名对二级指针进行赋值后,二级指针的指针运算操作是与二维数组的指针运算有区别的.通过下面的例子你将了解到二维数组与二级指针进行指针运算的本质区别. char array[3][4]={&quo ...

  2. 二维数组与二级指针是好朋友吗?

    抛出问题 有一个二维数组,我想把它传给一个函数.于是我把函数接口定义出来了,如下: int array[2][3] = {1,2,3,4,5,6}; void fun(int **array) {ar ...

  3. 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )

    文章目录 一.指针数组 和 二维数组 数据 拷贝到 自定义二级指针 中 1.函数形参 设计规则 2.三种内存模型 对应 函数形参 指针退化规则 二.完整代码示例 一.指针数组 和 二维数组 数据 拷贝 ...

  4. 【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )

    文章目录 一.打印 指针数组 中指针指向的字符串 二.字符串排序 三.代码示例 一.打印 指针数组 中指针指向的字符串 打印 指针数组 中指针指向的字符串 : 指针退化问题 : 传入二级指针 , 同时 ...

  5. PHP二维数组去重(指定键名)

    本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...

  6. C/C++二维数组名和二级指针的联系与区别

    1. 指针 1.1 一个指针包含两方面:a) 地址值:b) 所指向的数据类型. 1.2 解引用操作符(dereference operator)会根据指针当前的地址值,以及所指向的数据类型,访问一块连 ...

  7. 二维数组和二维数组名

    二维数组和二维数组名   对于一位数组我们认识到其数据元素在内存中是按线性顺序依次排列的,且一维数组名的值是一个指针常量.那么二维数组在内存中又是怎么存储的,其数组名又有什么含义呢?   定义一个二维 ...

  8. 二维数组名取地址加一

    二维数组和二维数组名: 对于一位数组我们认识到其数据元素在内存中是按线性顺序依次排列的,且一维数组名的值是一个指针常量.那么二维数组在内存中又是怎么存储的,其数组名又有什么含义呢?    定义一个二维 ...

  9. 二维数组名再取地址是什么

    ww6582163 | 分类:互联网 | 浏览246次 分享到:  2013-11-26 18:21提问者采纳 此处的 &a 的类型是char (*)[5][20],即指向整个数组的.就如同 ...

最新文章

  1. FZU1669 Right-angled Triangle【毕达哥拉斯三元组】
  2. 水磨石地面分隔条设置示意图_水磨石抛光过程中什么时候用百洁垫?什么时候用百亮钢丝棉?...
  3. vue 自定义封装组件 使用 model 选项
  4. python如何打开一个大文件?
  5. 什么是web标准??
  6. mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接
  7. 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境
  8. C#设计模式之12-代理模式
  9. 对无线编码缓存的一些理解
  10. linux gcc换成c99标准,关于GCC和C99中可变参数宏
  11. python进阶方向_python进阶—边练边学,学到极致
  12. java dojo,针对 Java 开发人员的 Dojo 概念
  13. php接入飞鹅打印机
  14. centos/redhat kernel-debug-info-xx.rpm与kernel-debuginfo-xx.rpm区别
  15. java开发一个简单的通讯录
  16. 淘晶驰串口屏入门(三)按钮、双态按钮、状态开关、图片、切图、触摸热区
  17. 面向卫星互联网的层级化智能部署架构
  18. 怎样判定高斯计的精度?
  19. 双卡双待的手机会有两个IMEI号
  20. 继豪中考体质测试系统软件,肺活量测试仪

热门文章

  1. for/in 循环遍历对象的属性
  2. JavaScript实时获取现货黄金,白银,美元指数价格代码
  3. 【Linux服务器架设】存储服务器构建原理-NFS
  4. 铭说 | 内网渗透工具分析——reGeorg
  5. Java奠基】Java经典案例讲解
  6. 基于UE4 的AirSim虚拟仿真
  7. Xcode Instruments之概述
  8. SQL 查询当前时间
  9. 关于钢材出口关税的问题
  10. 联想G480如何关闭数字小键盘