1
*(*(p+a)+b)

如果将 a*size 添加到地址 (p),那么为什么将 b*size 添加到 *(p+a)?*(p+a) 似乎是该位置的值,将 b*size 添加到它会改变它的值,而不是地址。但是,根据我读到的内容,这意味着要添加到地址中。

4

1 回答 1

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
于 2011-02-23T11:07:48.387 回答