兩個數(shù)組相減 c語言數(shù)組中為什么兩個相鄰變量地址相差1?
c語言數(shù)組中為什么兩個相鄰變量地址相差1?根據(jù)主題的描述,我將其重寫為一段C語言代碼,如下所示:一段非常簡單的C語言代碼定義了一個包含三個元素的一維數(shù)組。第一個printf輸出第一個元素和第二個元素的
c語言數(shù)組中為什么兩個相鄰變量地址相差1?
根據(jù)主題的描述,我將其重寫為一段C語言代碼,如下所示:
一段非常簡單的C語言代碼定義了一個包含三個元素的一維數(shù)組。
第一個printf輸出第一個元素和第二個元素的地址;
第二個printf輸出第一個元素和第二個元素地址之間的地址差。運(yùn)行結(jié)果如下:
如標(biāo)題所示,第一個元素的地址是22feb4,第二個元素的地址是22feb8。減去兩者,即22feb8-22feb4應(yīng)等于4。為什么是1?
事實上,編譯器進(jìn)行了一個處理,即在22feb8-22feb4中還有一個步驟,如下所示:
(22feb8-22feb4)/sizeof(int)=(22feb8-22feb4)/4=1
看到了嗎?您看起來像22feb8-22feb4,但是還有一步要除以sizeof(int)。
在C語言中,地址減法不采用地址之間的字節(jié)數(shù),而是采用地址之間的元素數(shù),一個元素可能占用多個字節(jié)。
我再問一次,如果代碼中的數(shù)組arr不是int類型,而是char類型或float類型,那么結(jié)果是什么?
c語言數(shù)組中為什么兩個相鄰變量地址相差1?
在C語言中,兩個地址的減法是指兩個地址之間的數(shù)組元素數(shù),而不是它們之間的字節(jié)數(shù)。例如,int a[10],*PP=AA[1]-a[0]的值是1而不是4P。4表示P指針指向的單位后面的第四個元素,即a[4],而不是a[1]。
數(shù)組中的互不相鄰元素指的是?
可以理解,幾個人站成一排,兩個不相鄰的人之間的關(guān)系與不相鄰的元素是一樣的。人可以理解為數(shù)組中的元素。
兩個指針相減?
指針減法=(地址1-地址2)/sizeof(類型)如果你把它當(dāng)作一條定律,你必須記住它。指針減法的結(jié)果是兩個元素之差的單位。地址1和地址2由%D計算,不是十六進(jìn)制,而是十進(jìn)制。在同一數(shù)組中,相鄰元素之間的差值為1個單位。這個單位不一定是一個字節(jié)。具體的字節(jié)數(shù)取決于您如何分配它。如果您是int類型,那么它是開始時每4個字節(jié)的一個單位。我們通常使用更多的int型數(shù)組。如圖所示,我的例子中兩個地址的減法是16,除以4,等于4
涉及數(shù)組運(yùn)算。
第一步是使用transfer轉(zhuǎn)置AC列數(shù)據(jù);
第二步是從IBD列中減去轉(zhuǎn)置的數(shù)據(jù)。
注意,由于是數(shù)組操作,需要注意兩點:1。首先,選擇結(jié)果數(shù)據(jù)的單元格范圍。在上述運(yùn)動圖像的情況下,數(shù)據(jù)輸入范圍是五行五列。
2. 對于數(shù)組操作,必須使用Ctrl-Shift-enter結(jié)束函數(shù)輸入。
在Excel的高級版本中,工作表最多只有16384列。
這意味著您的AC列數(shù)據(jù)最多不能超過16384行。