#include<stdio.h>
int main() {
int buff[] = {1,2,3,4,5,6,9,10};
char c = (buff+1)[5];
printf("%d\n",c);//output is 9
return 0;
}
누군가가 이런 일이 명확하게 어떻게 설명 할 수 까다로운 경우 왜배열 인덱싱 방법
#include<stdio.h>
int main() {
int buff[] = {1,2,3,4,5,6,9,10};
char c = (buff+1)[5];
printf("%d\n",c);//output is 9
return 0;
}
누군가가 이런 일이 명확하게 어떻게 설명 할 수 까다로운 경우 왜배열 인덱싱 방법
리콜 :
C에서 사각형 [ ]
암시 *(...)
있습니다 중괄호. 귀하가 제공 한 코드에 무슨 일
는 명확하지 포인터 연산이다. 이 라인 :
char c = *((buff + 1) + 5);
어레이 (6 위치)에서 제 7 요소를 가리키는
... 및 역 참조 :
char c = (buff+1)[5];
합니다 ... (C 표준에서) 다음에 해당 그것. 그것은 출력 (9),하지 (19)
비고해야한다 : 대괄호에 대한 메모 다음
, 다음과 같은 동등한 것을 볼 것이 중요합니다. arr
배열과 n
이다
arr[ n ] <=> n[ arr ]
는 ... 수치이다. 더 복잡한 예제 :
' '[ "]; i < 0; i++; while (1); do something awesome (y)." ];
... 완전히 유효한 포인터 연산입니다.
미안 편집 실수 –
@Krishnasundar을 할 생각합니다, 당신의 편집 후 내 대답은 여전히 의미합니다. –
네, 이제 어떻게되는지 분명하게 알 수 있습니다. 고마워요. –
{1, 2, 3, 4, 5, 6, 9, 10};
| |
buff buff+1 = {2, 3, 4, 5, 6, 9, 10} (say buff_1)
|
buff_1[5] = 9
내가 그것을 9. –