• 도트 멤버 연산자 & 화살표 멤버 연산자

둘 다 멤버데이터를 참조 할 때 사용한다

 

차이점이라면

 

도트 멤버연산자 - 객체에 사용

 

화살표 멤버연산자 - 객체의 주소에 사용

pttrA 같은 경우

(*pptrA) = 객체를 가르키는 주소

이니까 ->만 붙이면 되겠다

 

 


  • 데이터의 저장공간

Stack(자동공간)

지역변수가 저장되는 영역 LIFO 구조로 되어있다

해당 변수가 속한 스코프가 끝나면 자동으로 메모리 해제된다

 

Code&Data(정적공간)

전역변수가 저장되는 영역 프로그램이 종료될 때 메모리 해제된다

 

Heap(동적공간)

책에서는 Free store와 같다고 한다

근데 new로 할당하면 free store이고 malloc으로 할당하면 heap 뭐 이런 소리도 있던데

일단 내가 사용하고 있는 VC++에서의 new는 내부적으로 malloc이 실행되기에 그냥 같은 말이라고 생각한다

 

이 책 포인터부분에서 이 저장공간을 작성했다는건

사용자가 만든 함수 내부에 지역변수로 포인터써서 동적할당하고 해제 안했을때의 메모리 릭 문제를 강조하는거 같다

 

※메모리에 대해 좀 더 공부


  • 변수형의 조합(포인터 장난)

파트 이름은 변수형의 조합.. 이지만 그냥 배열, 구조체에 포인터를 이용할 수 있다 라는 내용이다

 

예제 비슷하게 장난 같은걸 쳐봤다

3번은 왼쪽부터 쭉 읽으면 논리적으로는 완벽해보인다만 오류가 나온다

 

그 이유는 연산자 실행 순서 때문인데

 

모든 식에서(괄호없는 수식) * 보다 . 가 먼저 실행되기 때문에 

 

(arr+1).member 가 실행되는것이다

 

그렇기에 괄호를 한번 더 쳐주어서 *가 먼저 실행되게 하면 정상 실행된다

 

안쓰던 더블포인터랑 포인터 배열 사용 했는데 장난치다보니까 나도 헷갈리더라ㅋㅋㅋㅋㅋ

미래의 나에게 알려준다....

 

 

+ Recent posts