난 그냥 몇 가지 코드를 읽고과 같이, 사람이 arr
전에 2 요소에 액세스 할 수 arr[-2]
를 사용하는 것을 알 수 있었다 : C에서 음수 배열 색인을 사용할 수 있습니까?
|a|b|c|d|e|f|g|
^------------ arr[0]
^---------- arr[1]
^---------------- arr[-2]
이 그
를 사용할 수 있습니까?나는 arr[x]
이 *(arr + x)
과 동일하다는 것을 알고 있습니다. 따라서 arr[-2]
은 *(arr - 2)
입니다. 괜찮아 보입니다. 어떻게 생각해?
UB를 얻기 위해 포인터를 역 참조 할 필요가 없습니다. 'somearray-2' 만 계산하는 것은 결과가 somearray의 시작에서부터 끝까지 1을 넘지 않는 한 정의되지 않습니다. – RBerteig
오래된 책에서'[]'는 포인터 연산을 위해 * 구문 sugar *으로 참조되었습니다. * 즐겨 찾기 * 초보자를 혼란스럽게하는 방법은'arr [1] '대신'1 [arr]'을 쓰고 그게 무슨 뜻인지 짐작하는 것입니다. – Dummy00001
32 비트 int 인덱스가 음수 일 때 64 비트 시스템 (LP64)에서는 어떤 일이 발생합니까? 주소 계산 전에 색인이 64 비트 부호있는 int로 승격되어야합니까? –