배열 내의 구조체에 액세스하여 여러 필드를 수정한다고 가정 해 보겠습니다. 난 항상 두 번째 방법은 "더 나은 것을 가정참조와 배열 색인간에 차이가 있습니까?
unitStruct& unit = units[unitIndex];
unit.field1 = value1;
unit.field2 = value2;
unit.field3 = value3;
...
: 당신은 거기에서을 수정 한 후 구조체에 대한 참조를 당긴 수
units[unitIndex].field1 = value1;
units[unitIndex].field2 = value2;
units[unitIndex].field3 = value3;
...
또는 : 당신은, 그래서 직접 할 수 ", 그것은 구조체를 다시 찾을 때마다 배열에 인덱스 할 필요가 없다는 것을 의미합니다.
하지만 생각해 보려고 멈추었을 때 컴파일러가 배열 인덱스를 포인터로 구현하는 것 같습니다. 또한 참조는 포인터로 구현 될 가능성이 큽니다. 어쩌면 그들은 내부적으로 같은 일을하고 있을까요?
그래서 내가 궁금한 건, 생성 된 코드 측면에서 컴파일러의 관점에서 볼 때,이 두 가지 방법 사이에 실제적인 차이점이 있습니까? 컴파일러는 이러한 메소드 중 하나에 대한 추가 코드를 생성합니까? 아니면 정확히 동일한 결과를 얻는 두 가지 방법입니까?
최적화는 -O3과 함께 사용 가능합니다. –
@RobK 좋은 지적, 나는 그것을 강조 할께, 고마워. – amdn