2011-02-23 141 views
1
*(*(p+a)+b) 

如果將*尺寸添加到地址(p),那麼爲什麼將b *尺寸添加到*(p + a)? *(p + a)似乎是該位置處的值,並將b *大小添加到該值將更改其值,而不是地址。但是,根據我讀到的內容,這意味着要添加到地址中。指針算術的澄清

回答

4

考慮到你的表達,並假設你在談論C,p必須是指向指針的指針。會發生什麼是:

char ** p; 
int a = 2; 
int b = 4; 

(p+a) // adds 2 * sizeof(char *) 
*(p+a) // evaluates to a char * 
char * c = *(p+a) 
(c+b) // adds 4 * sizeof(char) 
*(c+b) // evaluates to a char 
+0

這是有道理的。我沒有想到指針指針的多維數組。然後,解引用會產生一個指針,編譯器或其他東西允許值成爲地址。 – user490735 2011-02-23 11:16:55