-
[C++] ptr[offset], offset[ptr] 은 같은 값이다?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 3. 16. 23:53반응형
개요
악몽같은 영상을 봤다. 여러가지 언어들의 끔찍한 코드들을 보여주는 유머성 유튜브 영상이었는데 다른 언어들 보면서 '캬 뭐 이딴것들이 다 있지?' 하다가 C++이 나오자마자 머리를 탁 칠수밖에 없었다.
아니 뭔 괴상한 코드가 나왔다. 근데 해보니 실행이 된다! 진짜 너무 무섭고 손발이 덜덜 떨리는 끔찍한 모습이 아닐 수가 없다. 혹시나 이런 기괴한 모습을 보고 싶다면 아래 영상의 1:45로 이동하면 됩니다.
결론 - 기존에 사용하는 배열과 같은 이야기
기존 배열의 모습은 '배열이름[인덱스]' 이런 느낌입니다. 이걸 접근하기 위해서 C++에서 주소를 배열이름의 주소(이게 첫 원소의 주소)+인덱스(offset)로 찾기 때문에 위와 같은 일이 벌어질 수 있는 것으로 보입니다. 그야말로 끔찍한 일이 아닐 수 없습니다.
솔직히 완전히 이해가 되는 부분은 아닙니다. float 로 해도 동일한 결과가 나오기에 위의 이야기가 맞다고 볼 수밖에 없는데 정확한 원리를 잘 모르니...혹시 이해하신 분들은 댓글로 남겨주시길 바랍니다! 물론 안다고 하더라도 사용하지는 않을거 같네요. 영상의 제목처럼 남들이 알아보기 힘든 저주스러운 코딩이니깐요.
반응형'쾌락없는 책임 (공부) > C++ 짜잘이' 카테고리의 다른 글
[C++] vector 는 2배씩 늘어나는게 맞을까? (0) 2023.09.21 [C++] Branchless 가 얼마나 잘 작동할까? (0) 2023.08.23 [C++] std::move return은 정말 필요할까? (1) 2023.01.22 [C++] sort 함수에 함수 객체가 좋을까 함수가 좋을까? (0) 2022.09.02 [C++/OS] 메모리 단편화와 해결 방법은? (0) 2022.08.28