C ++의 변수는 암시 적으로 포인터입니다.

Oct 16 2020

이것을 알아내는 데 어려움을 겪고 있습니다. C ++로 입력 할 때

int a = 4;

메모리 관리자는 값 4를 유지하기 위해 4 바이트를 할당하고 해당 값을 특정 주소에 유지합니다. "a"변수는 이름 일 뿐이라는 사실을 제공합니다.

  1. 변수 "a"는 어디에 저장됩니까?
  2. 4가 그 자체로 임시 객체이고 "a"가 참조 나 포인터를 바인딩한다는 것을 알고 있기 때문에 메모리 어딘가에 저장하고 메모리 주소 4를 가리 킵니다.

답변

2 eerorika Oct 15 2020 at 23:47

C ++의 변수는 암시 적으로 포인터입니다.

아니요. 변수는 암시 적으로 포인터가 아닙니다.

변수 "a"는 어디에 저장됩니까?

메모리의 어딘가 (또는 아무데도 ). 변수에 대한 메모리 할당은 언어 구현의 책임입니다.

메모리 어딘가에 저장합니까

예 (또는 아무데도).

4의 메모리 주소를 가리 킵니다.

아니오. 추상 기계에는 그러한 포인터가 없습니다.

그래서 "a"는 객체 "4"에 대해 어떻게 알 수 있습니까?

4는 개체가 아닙니다. 4는 리터럴 또는 컨텍스트 / 관점에 따른 값입니다.

a아무것도 아는 것이 아닙니다. 컴파일러 에 의해 명명 된 객체는 것을 알고 a값 4를 가지고있다.

3 RSahu Oct 15 2020 at 23:43
  1. 변수 "a"는 어디에 저장됩니까?

내 경험상 "a"는 런타임에 저장되지 않습니다. 표준은 저장을 요구하지 않습니다. 컴파일, 링크 및 디버깅에 사용되는 이름입니다. 컴파일러, 링커 및 디버거에 필요한 데이터는 플랫폼별로 다릅니다. 표준은 해당 데이터의 특성을 지시하지 않습니다.

따라서 두 번째 질문은 무시할 수 있습니다.