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

* 크기가 주소 (p)에 추가되면 * (p + a)에 b * 크기가 추가되는 이유는 무엇입니까? * (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