2016 - 2024

感恩一路有你

两个数组相减 c语言数组中为什么两个相邻变量地址相差1?

浏览量:2146 时间:2021-03-11 18:12:09 作者:admin

c语言数组中为什么两个相邻变量地址相差1?

根据主题的描述,我将其重写为一段C语言代码,如下所示:

一段非常简单的C语言代码定义了一个包含三个元素的一维数组。

第一个printf输出第一个元素和第二个元素的地址;

第二个printf输出第一个元素和第二个元素地址之间的地址差。运行结果如下:

如标题所示,第一个元素的地址是22feb4,第二个元素的地址是22feb8。减去两者,即22feb8-22feb4应等于4。为什么是1?

事实上,编译器进行了一个处理,即在22feb8-22feb4中还有一个步骤,如下所示:

(22feb8-22feb4)/sizeof(int)=(22feb8-22feb4)/4=1

看到了吗?您看起来像22feb8-22feb4,但是还有一步要除以sizeof(int)。

在C语言中,地址减法不采用地址之间的字节数,而是采用地址之间的元素数,一个元素可能占用多个字节。

我再问一次,如果代码中的数组arr不是int类型,而是char类型或float类型,那么结果是什么?

c语言数组中为什么两个相邻变量地址相差1?

在C语言中,两个地址的减法是指两个地址之间的数组元素数,而不是它们之间的字节数。例如,int a[10],*PP=AA[1]-a[0]的值是1而不是4P。4表示P指针指向的单位后面的第四个元素,即a[4],而不是a[1]。

数组中的互不相邻元素指的是?

可以理解,几个人站成一排,两个不相邻的人之间的关系与不相邻的元素是一样的。人可以理解为数组中的元素。

两个指针相减?

指针减法=(地址1-地址2)/sizeof(类型)如果你把它当作一条定律,你必须记住它。指针减法的结果是两个元素之差的单位。地址1和地址2由%D计算,不是十六进制,而是十进制。在同一数组中,相邻元素之间的差值为1个单位。这个单位不一定是一个字节。具体的字节数取决于您如何分配它。如果您是int类型,那么它是开始时每4个字节的一个单位。我们通常使用更多的int型数组。如图所示,我的例子中两个地址的减法是16,除以4,等于4

涉及数组运算。

第一步是使用transfer转置AC列数据;

第二步是从IBD列中减去转置的数据。

注意,由于是数组操作,需要注意两点:1。首先,选择结果数据的单元格范围。在上述运动图像的情况下,数据输入范围是五行五列。

2. 对于数组操作,必须使用Ctrl-Shift-enter结束函数输入。

在Excel的高级版本中,工作表最多只有16384列。

这意味着您的AC列数据最多不能超过16384行。

两个数组相减 数组相邻元素相加 c语言数组相邻的元素相加

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。