1
*(*(p+a)+b)
* 크기가 주소 (p)에 추가되면 * (p + a)에 b * 크기가 추가되는 이유는 무엇입니까? * (p + a)는 해당 위치의 값으로 표시되며 b * 크기를 추가하면 주소가 아닌 값이 변경됩니다. 그러나, 내가 읽은 것을 기반으로 한 것은 주소에 추가하기위한 것입니다.포인터 연산에 대한 클로킹
*(*(p+a)+b)
* 크기가 주소 (p)에 추가되면 * (p + a)에 b * 크기가 추가되는 이유는 무엇입니까? * (p + a)는 해당 위치의 값으로 표시되며 b * 크기를 추가하면 주소가 아닌 값이 변경됩니다. 그러나, 내가 읽은 것을 기반으로 한 것은 주소에 추가하기위한 것입니다.포인터 연산에 대한 클로킹
표현식을 감안할 때 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
의미가 있습니다. 포인터에 대한 포인터의 다차원 배열을 생각하지 않았습니다. 그런 다음 역 참조를하면 컴파일러 나 다른 포인터가 값을 주소로 사용할 수있는 포인터를 생성합니다. – user490735