C語言中指針有哪些運算 C語言指針可以相減嗎?為什么?
C語言指針可以相減嗎?為什么?如果兩個指針指向同一個數(shù)組,可以將它們相減,結果是兩個指針之間的元素數(shù)。讓我們以本章開頭介紹的街道地址的類比為例。假設我住在第五大道118號,我的鄰居住在第五大道124號
C語言指針可以相減嗎?為什么?
如果兩個指針指向同一個數(shù)組,可以將它們相減,結果是兩個指針之間的元素數(shù)。讓我們以本章開頭介紹的街道地址的類比為例。假設我住在第五大道118號,我的鄰居住在第五大道124號。每間房子的地址間距是2(我這邊的街道地址是連續(xù)的偶數(shù))。那么我鄰居的房子就是我房子前面的(124-118)/2(或3)房子(我鄰居的房子和我的房子分開兩個房子,即120和122)。指針之間的減法與上述方法相同。
指針是整數(shù)嗎,若不是整數(shù),指針為什么可以進行加減運算?
指針是可以減去的十六進制地址。P2是buf[3]的地址;P1是buf[1]的地址;因為是整數(shù)數(shù)據(jù),一個整數(shù)是4字節(jié),P2-P1=(P2指向的地址-P1指向的地址)/sizeof(int)P1和P2的差是2個整數(shù),即8字節(jié);第二種方法相當于將地址轉換成10個基數(shù)并進行減法,因此數(shù)字是8;inta[10]int*P1=&A[1]]int*P2=&A[3]printf(%LDn,P2-P1)printf(%dn,(int)P2)printf(%dn,(int)P1)打印出轉換成int類型的地址。(如果不轉換int,則直接打印地址時可以看到8字節(jié)的差異。)