热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C和指针读书笔记9

二维数组声明和初始化:Type数组名[m][n]:声明了一个二维数组。Intmatrix[3][4]{{00,01,02,03},{10,11,12,1

二维数组

 声明和初始化:

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


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
author-avatar
偏偏喜欢你_Jerry_207
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有