char firstLetter=word[0];
을 고려하십시오. firstLetter
을 사용하여 아무 것도 읽지 않으므로 설탕으로 사용하십시오. 새로운 메모리를 할당하는 대신 인라인 "별칭"을 만들 수있는 #define
이외의 것이 있습니까? 스크립트가 작성 될 수 있지만 이미 존재하는 것이 있으면 실현할 수 있습니다.설탕 구문에 대한 새 변수 대신 별칭
답변
, 당신은 항상 객체의 별칭 만들 수 있습니다
char& firstLetter=word[0];
이 word[0]
에 대한 firstLetter
및 별칭을 만들 것이다 (word
를 가정하는 것은 배열, 그리고 포인터입니다 나중에 변경됩니다).
이것은 내가 찾고 있었던 것이다. 고마워, 보. 이 글을 읽는 사람은 C++ 11의 constexpr에 대해서도 비슷하지만 비슷하지는 않지만 알아 냈습니다. – user1420741
여기에 계속되는 메모리 할당은 없습니다. word[0]
의 값을 레지스터 나 스택에 복사 할 수 있지만이 작업을 수행해야하는지 여부는 컴파일러의 책임입니다.
"인라인 별칭"을 사용하면 훨씬 더 나쁜 코드가 생성 될 수 있습니다. 표현 word[n]
은 일종의 대체를 사용한 경우 여러 번 반복되는 계산을 의미합니다. 문제는 정말 C++에 대한 경우
컴파일러가 공통 하위 표현식 제거를 수행하지 않고 주소를 한 번 계산하지 않는 한. 어느 것이 잘 할 수 있습니다 ('휘발성'과 같은 불쾌한 것을 제외하고). 이것은 효율성의 문제가 아닙니다. – delnan
C++ 또는 C (또는 둘 다)? 대답과 편의는 두 언어에 따라 다릅니다. – delnan
C++ 주로 .. – user1420741