数组与数组中的一个元素在C语言中都写成比如a[10]这个样子的吗?怎么写得一样的呢?

数组与数组中的一个元素在C语言中都写成比如a[10]这个样子的吗?怎么写得一样的呢?,第1张

a[10]表示数组只有在初始声明数组的时候,例如:int a[10];声明一个大小为10的数组,数组a的元素表示是从a[0]-a[9]。数组a的第10个元素应该是a[9],不是a[10]。所以你说的数组与数组中的一个元素都写成a[10],这种情况是不可能出现的。够清楚吧,3q给分!

&a[i][j] 表示数组a中第i行第j列的元素的地址
a[i]+j 如果数组a定义为一个二维数组,那么a[i]+j 就表示第i行第j列的元素的地址,和上面那个一样,如果数组a是一维数组,那么就表示一个表达式的值
(a+1)=j 数组名表示第一个元素的地址,加1后表示a[0][1]的地址,这句相当于a[0][1]=j;
&a[0][0]+4i+j 这个表示a[i][j]的地址,前提是a的列数为4
a[0]+4i+j 这个表示a[4i+j][0]的地址,因为a[0]表示第一行的地址,递增的单位为一行!

D
两个知识点:
1、二维数组的数组名,可以看作类型是指向第二维子数组的指针,比如int a[4][3];a的类型是int ()[3],即指向int [3]数组的指针。
2、p[i]等价于(p+i)。
由这两点可知,int (prt)[3]=a的话,prt和a在使用上就是一样的了。a[1][2]就是ptr[1][2],利用知识点2可知ptr[1][2]=(ptr[1]+2)=((ptr+1)+2)

可以用Array中自带的方法:
arrayObjshift( )
shift 方法可移除数组中的第一个元素并返回该元素。
例如:
var ary=[1,2,3,4];
var a=aryshift();//a=1;ary=[2,3,4];
arrayObjslice(start, [end])
slice 方法返回一个 Array 对象,其中包含了 arrayObj 的指定部分。
参数:start,截取数组开始下标。end截止的下标,但不包括end元素
例如:
var ary=[1,2,3,4];
var newary=aryslice(0, 2);//newary=[1,2],不包括下标2 所对应的元素3。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13335936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-17
下一篇 2023-07-17

发表评论

登录后才能评论

评论列表(0条)

保存