二维数组

声明和初始化:

Type  数组名[m][n] : 声明了一个二维数组。

Int  matrix[3][4] = { { 00, 01, 02, 03} ,

{ 10, 11, 12, 13} ,

{ 20, 21, 22, 23} }

视角分析:

二维数组可以看成一个数组:只不过这个数组由复杂元素组成。

Int   matrix[3][4] = {❤, ❤, ❤} ,复杂元素❤是一个数组。

存储方式:

编译器遇到二维数组的声明时,会为其分配一段空间,顺序如图。

并记录下来, matrix ---- 第一维数组的首地址。 并记录它的指向性。 它是一个地址数据,指向复杂元素0的首地址。

v

数组名纠纷

我现在认为: 数组名仅仅是一个代号,它和其他形式定义的变量名称不一样。

比如:  int a =9;  编译器记录下:  代号a , 地址为 0x880,值为9. 无指向性。

Int *p = &a; 编译器记录如下: 代号p,地址为0x884,值为 0x880, 具有一级指向性。

Int arry[3] = { 1, 2,3} 编译器记录如下: 代号arry, 地址为 0x888,值为0x888,具有一级指向性。

同时分配地址: 0x88C值为1,同时0x890值为2,同时0x894值为3

Int matrix[2][3] = {2,2,2,1,1,1} 编译器记录如下:  代号matrix, 地址为 0x898,值为0x898,具有二级指向性。

同时分配地址: 0x89C值为2,同时0x8A0值为2,同时0x8A4值为2

0x8A8值为1,同时0x8AC值为1,同时0x8B0值为1

Matrix的值为430765216

Matrix的地址,读出也为430765216。

Matrix[0] ,将执行 *(matrix +0) = *(matrix) 获得该地址内的值。

Matrix[1] ,将执行 *(matrix +1) = *(matrix + 1*3*4) ,相当于加12

Matrix[0][0],是元素值,为2.

&(Matrix[0][0]) 是元素的地址。

P 是p的值。

&p是p的地址,很显然是自己独立的一个地址。

*p是获得p地址内存储的值。

下标访问

Matrix[1] 会被编译器转换成 *(matrix +1)  ,其中matrix符号会取其值,即地址。所以+1,将 +1*sizeof(复杂元素),即行跳

Matrix[1][2] 会被编译器转换成 *( *(matrix +1) + 2) , *(matrix +1)的结果仍是地址,对地址+2,将执行 +2*sizeof(int)。即元素2。 此时*(地址)就能获取数据了。

我觉的就是 x+1操作,主要看 x是否具有指向性,如果具有指向,则 +1*sizeof(指向..) 。没有才老老实实+1.

指针数组

A arrary of point :归根结底是一个数组,只是这个数组的元素有点特别,它们都是 指针。

char  *p[10] ; 定义了一个数组,它具有10个元素,且这10个元素都是 指向char的指针。

数组指针

A point to A  array : 归根结底是一个指针,它指向的内容比较特别,指向的是一个数组。那指向数组的哪一部分?

Char (*p)[10] ;定义了一个指针*p, 它指向一个 长度为10,元素为char的数组。

转载于:https://www.cnblogs.com/mokang0421/p/7482587.html

C和指针---读书笔记9相关推荐

  1. c语言指针读书笔记,《C与指针》读书笔记一

    我平时不太看书.倒不是我没有读书的习惯.而是如今的社会知识传播的方式太多.书已经不是唯一知识的载体.至于"书是人类知识的阶梯"这句名言的时代已经过去了.每天各种微信公众号推介的文章 ...

  2. Android智能指针——读书笔记

    目录结构 目录结构 参考资料 概述 背景知识 GC经典问题 轻量级指针 实现原理分析 构造函数 析构函数 应用实例分析 强指针和弱指针 强指针的实现原理分析 增加对象的弱引用计数 增加对象的强引用计数 ...

  3. c语言指针读书笔记,《C与指针》读书笔记九

    原标题:<C与指针>读书笔记九 指针之所以在C语言中占据很大分量,是因为指针有很大的灵活性.指针以结构体结合确实为程序的编写提供了一把锋利无比的宝剑.在有些资料上介绍结构体是多种数据集合, ...

  4. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  5. 《征服C指针》读书笔记

    <征服C指针>读书笔记 评价 对于学习过C语言和C++的,<征服C指针>推荐一读,能明白一些指针深层次的一些知识点,对于一些知识有一种顿悟的感觉.如果C语言不熟或者是初学者就没 ...

  6. 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)

    读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...

  7. 《JavaScript面向对象精要》读书笔记

    JavaScript(ES5)的面向对象精要 标签: JavaScript 面向对象 读书笔记 2016年1月16日-17日两天看完了<JavaScript面向对象精要>(参加异步社区的活 ...

  8. C++ Primer 第三版 读书笔记

    1.如果一个变量是在全局定义的,系统会保证给它提供初始化值0.如果变量是局部定义的,或是通过new表达式动态分配的,则系统不会向它提供初始值0 2.一般定义指针最好写成:" string * ...

  9. 《编程之美》读书笔记19: 3.9 重建二叉树

    <编程之美>读书笔记19: 3.9 重建二叉树 对根节点a以及先序遍历次序P和中序遍历次序I,查找a在I中的位置,将I分为两部分,左边部分的元素都在a的左子树上,右边的元素都在a的右子树上 ...

  10. 《代码阅读方法与实践之读书笔记之一》

    <代码阅读方法与实践之读书笔记之一> 阅读代码是程序员的基本技能,同时也是软件开发.维护.演进.审查和重用过程中不可或缺的组成部分.<代码阅读方法与实践之读书笔记之一>这本书围 ...

最新文章

  1. LINQ to SQL 运行时动态构建查询条件
  2. Hyper-V安装(摘自本站)
  3. 【数据挖掘】理解数据挖掘
  4. 2017-2018 20155309南皓芯 信息安全系统基础设计第十四周博客
  5. 搜狗词库爬虫(2):基础爬虫框架的运行流程
  6. 《直播疑难杂症排查》之二:播放卡顿
  7. c语言之判断电压最大值最小值,基于单片机的频率计的C语言源代码
  8. “约见”面试官系列之常见面试题之第五十八篇之join和split(建议收藏)
  9. 给开源项目贡献代码_您可以为开源做出6种非代码贡献
  10. Jenkins系列之-—07 集成JIRA
  11. 控制台异常:Could not connection
  12. 造芯片这事情,到底要不要找潘金莲算账?
  13. delphi 整数类型的表述
  14. java数据类型转换方向_java基础学习篇02(数据类型转换和基本面试题)
  15. 硬盘分区整数计算器(如何让硬盘容量成整数)
  16. 《尚书》全文、注释及译文(1)
  17. html文字居中单词,html文字居中
  18. Oracle前期准备
  19. mysql自增列防止恢复初始_重置mysql的自增列 AUTO_INCREMENT初时值 | 瑕疵学院 – 学习无瑕疵,成就有保障...
  20. 片上总线学习之Wishbone

热门文章

  1. HCIE Secuirty AC概述 备考笔记(幕布)
  2. Linux之http服务基本配置案例
  3. 2019华为软件精英挑战赛 赛后总结
  4. cisco配置交换机管理地址和默认网关
  5. Android RxVolley = Volley + RxJava + OkHttp
  6. ThinkPHP中create()方法自动验证表单信息
  7. [Android] [Java] Process 创建+控制+分析 经验浅谈
  8. 七日Python之路--第八天(一些琐碎)
  9. hdoj1000解题报告
  10. uvalive3983Robtruck