首页 > 其他分享 >二维数组中各种定义的区别

二维数组中各种定义的区别

时间:2022-11-20 20:33:07浏览次数:57  
标签:定义 可带 元素 二维 数组 地址 一维

转自https://www.zybang.com/question/7c6ed03ad3671faf527268e0c66ebb9e.html

1. *a:以a[0][0]为首元素的一维数组.可带一个索引:(*a)[i] 即a[0][i]
2. a:以a[0][0]为首元素的二维数组.可带两个索引:a[i][j]
3. a[0]:同*a
4. a[0][0]:首元素
5. a[1]:以a[1][0]为首元素的一维数组.可带一个索引.
6. &a[1]:以a[1][0]为首元素的二维数组.可带两个索引:(&a[1])[i][j]即a[i+1][j]
要掌握它们的区别,关键是掌握它们各自支持的运算符的不同处理.
对于运算符'+':a[0][0]执行的是数学上的加法;而其余的由于都是指针,执行的都是地址的加法,而且有的加1是指向同一行中的下一列上的元素(如*a、a[0]和a[1]),有的加1是指向同一列中的下一行上的元素(如a和&a[1]).
对于运算符'*':
a[0][0]执行的是数学上的乘法,如a[0][0] * 2;
*a、a[0]和a[1]执行的是取值,如**a + *a[0] + *a[1]
a和&a[1]执行的是由原来的二维数组变为一维数组,也可理解为改变指针的类型,其加1的意义就不同了,如a+1和(*a)+1的不同.

 

二维数组是一维数组的数组,对二维数组a来说,它的元素a[1]就是下标为1的一行数据,是个一维数组,而a[1]作为这个一维数组的名字,其实就是指向数组第一个元素的指针,即这一行的首地址。

a[1]+1即a[1][1]的地址,因此*(a[1]+1)即间接访问a[1][1]。 如果不能理解,不妨把a[1]想成另一个名字,例如b。*(b+1)即b[1],肯定是好理解的。*(a+1)是数组元素。但a是二维数组,那你就要再进一步理解了。
因为a是二维数组名,即是一维数组a[0] 、a[1] 、a[2] 的首地址。
a+1就是 a[1]的地址。
*是取指针的值。
那么*(a+1)就是取 a[1]的值。
它是什么呢?它又是一个数组: a[1][0], a[1][1] ,a[1][2]。
而且 a[1]是它们的首地址。
即 a[1]的值就是 a[1][0]的地址。(多维数组中除最后一位其他都为首地址)
 

标签:定义,可带,元素,二维,数组,地址,一维
From: https://www.cnblogs.com/lcy1455/p/16909437.html

相关文章

  • 数组
    数组本章内容数组的使用树形菜单第一节数组的使用数组:用于存储一组数据,可以对数据进行批量处理语法://创建长度为5的数组空间varary=newArray(6);<script......
  • P8195 [传智杯 #4 决赛] 小智的疑惑 ----- 字符串匹配、KMP算法优化next数组
    题目描述传智专修学院给了小智一个仅包含小写字母的字符串 ss,他想知道,里面出现了多少次子串 chuanzhi 呢。我们称一个字符串 tt 是 ss 的子串,当且仅当将 ss 的......
  • C# 自定义控件 UserControl 绑定
    主界面<Windowx:Class="MyWPFSimple2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic......
  • vue组件中插入二维码的操作
    vue组件中插入二维码的操作 引入在public/index.html的head标签中引入:<scriptsrc="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>......
  • WPF自定义控件之消息提示
    创建消息提示控件internalclassMessage:ContentControl{publicintTime{get;set;}[Bindable(true)]publicMessageTypeMes......
  • 自定义RedisTemplate<String, Object>
    说明:redisTemplate的keySerializer、hashKeySerializer设置为StringRedisSerializer,valueSerializer、hashValueSerializer设置为**genericJackson2JsonRedisSerializer**......
  • P8843 [传智杯 #4 初赛] 萝卜数据库 ---- 嵌套数组
    题目描述花栗鼠很喜欢偷吃生产队的大萝卜,因此花栗鼠科技大学正在研究一种新型的数据库,叫做萝卜数据库。具体来说,它支持 k(1\leqk\leq100)k(1≤k≤100) 个字段,每个......
  • 45.自定义函数实现分组统计
    #自定义函数实现分组统计#能过自定义的函数实现分组统计importpandasaspddf=pd.read_excel('电脑配件销售记录.xlsx')#print(df.head()))#回顾知识点#p......
  • java将字符串和字符串数组互相转换方法
    /**java可以使用两种方法直接将字符数组转为字符串*方法1:直接在构造String时转换。char[]data={'a','b','c'};Stringstr=newString(data);*方法2:调用S......
  • 字符串、数字和数组的常用方法总结
    字符串的常用方法(用str表示一个字符串)1.str.charAt()作用:获取对应索引位置的字符需要传递一个参数,就是字符索引返回值:对应索引位置的字符2.str.toLowerCase()作用:......