二维数组和二维数组名:

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

int Arr   [3] [4] = {{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}};

我们可以将一个二维数组看做是一个其中元素为数组的一个一位数组,也就是说二维数组第一维的元素实际上是另一个数组。所以数组名arr是一个指向一个包含有4个整形元素的数组的指针,即数组指针常量。

#include<stdio.h>
int main() {double a[2][3];printf("%d\n",*(&a+1)-a);//行数 (取二维数组名的地址进行加一操作,每次加一移动的是行数个单位也就是2行)printf("%d\n",*a);//第一行 行首地址printf("%d\n",*(a+1));//第一行加一也就是来到第二行(这里行加一每次移动是列数个单位地址)printf("%d\n",*(a+1)-*a);//列数  (第二行的行首地址减去第一行的行首地址得到列数个地址单位)printf("%d\n",**(&a+1)-*a);//数组元素个数(取二维数组名地址加一后解两次地址得到行地址,两个行地址相减得到的是二维数组所有元素的个数)(取二维数组名a的地址得到加一跳过的是整个二维数组元素个数个地址)return 0;
}

**(&a+1)-*a

二维数组名取地址加一相关推荐

  1. 二维数组名、二维数组名取地址、二级指针

    先给出结论,便于以后查阅: 首先给出几个定义: typedef int (*p1x4)[4];//定义数据类型,p1x4这种类型为指向含4个int元素的1维数组的指针 typedef int (*p3 ...

  2. 关于对C语言中数组名取地址加减等操作的一点探究

    对于数组名取地址强制转换的操作 偶然在晚上学了C语言指针后网页闲逛找题时,被一个数组名取地址搞糊涂了,在自己试验加探索后我稍微悟了一点东西. 代码如下: #include<stdio.h> ...

  3. 数组名和数组名取地址

    在C中,在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址. 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是"指向int的常量指针& ...

  4. 数组名和数组名取地址 的区别

    在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址. 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是"指向int的常量指针 ...

  5. 对二维数组的数组名取地址,a,a+1的理解

    C语言规定,数组名代表数组的首地址,也就是第0号元素的地址.所以a==&a[0] 但对数组名取地址时却要注意了,在理解"对数组名取地址"这一表达式的含义时一定要记住:数组名 ...

  6. C语言的数组名和对数组名取地址

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  7. 一维数组名与二维数组名的关联

    1.一维数组名与二维数组名的关系之于普通指针与数组指针的关系 2.首先数组名编译器会隐式变换看做指针常量,因此a[i]与a+i是等价的. a+i返回由i指定的行地址,假设元素类型为char,则行指针类 ...

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

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

  9. 对数组名取地址赋值给数组指针与普通指针的区别

    对数组名取地址赋值给数组指针与普通指针的区别: 以下红色字体的说法是错误的:     使用一级指针来接受&arr,只是表示一个普通的一级指针,     它并没有接收到&arr赋来的跨度 ...

最新文章

  1. springboot-26-springboot 集成rabbitmq
  2. 解决win10 .net framework 3.5安装失败0x800f081f
  3. BundleFusion那些事儿
  4. 定义命令别名(alias)
  5. zoj1610-Count the Colors【线段树】
  6. TFS2010配置SQLServer2008R2 tf255049错误
  7. html获取data-*值,html5 获取和设置data-*属性值的四种方法讲解
  8. java中的基本数据类型和运算符_【Java基础】基本数据类型和运算符
  9. java sax解析xml_【转】java使用sax解析xml文件
  10. 为什么私有GIT服务器上无法查看上传的代码?
  11. python多线程运用
  12. 06. Explicitly disallow the use of compiler-generated functions you do not want
  13. ZABBIX 4.0 安装过程记录
  14. 陈丹琦新作:关系抽取新SOTA,用pipeline方式挫败joint模型
  15. IT之软件公司组织架构
  16. 杰出人物的四大法宝——与成功学大师对话
  17. 20172328《程序设计与数据结构》第六周学习总结
  18. 总算编译通过了《自制编程语言》一书里的代码!
  19. 那些年啊,那些事——一个程序员的奋斗史 ——17
  20. 通过C#和Arduino实现软件示波器

热门文章

  1. 【每日一题见微知著】二分法——找单身狗(bushi)
  2. Discuz招商加盟门户网站整站模板/加盟项目网站商业版源码/整站带测试数据
  3. 2021-12-18 迈向程序猿的第四十七步
  4. 铭说 | 内网渗透工具分析——reGeorg
  5. sentos7查看网络配置_怎么查看centos7的网络配置
  6. 全差分运算放大器ADA4930的分析(1)
  7. Robotframework自动化测试框架
  8. Java-String的用法
  9. c语言——简单计算器
  10. Redis系列之——Redis-Cluster