- 도트 멤버 연산자 & 화살표 멤버 연산자
둘 다 멤버데이터를 참조 할 때 사용한다
차이점이라면
도트 멤버연산자 - 객체에 사용
화살표 멤버연산자 - 객체의 주소에 사용
pttrA 같은 경우
(*pptrA) = 객체를 가르키는 주소
이니까 ->만 붙이면 되겠다
- 데이터의 저장공간
Stack(자동공간)
지역변수가 저장되는 영역 LIFO 구조로 되어있다
해당 변수가 속한 스코프가 끝나면 자동으로 메모리 해제된다
Code&Data(정적공간)
전역변수가 저장되는 영역 프로그램이 종료될 때 메모리 해제된다
Heap(동적공간)
책에서는 Free store와 같다고 한다
근데 new로 할당하면 free store이고 malloc으로 할당하면 heap 뭐 이런 소리도 있던데
일단 내가 사용하고 있는 VC++에서의 new는 내부적으로 malloc이 실행되기에 그냥 같은 말이라고 생각한다
이 책 포인터부분에서 이 저장공간을 작성했다는건
사용자가 만든 함수 내부에 지역변수로 포인터써서 동적할당하고 해제 안했을때의 메모리 릭 문제를 강조하는거 같다
※메모리에 대해 좀 더 공부
- 변수형의 조합(포인터 장난)
파트 이름은 변수형의 조합.. 이지만 그냥 배열, 구조체에 포인터를 이용할 수 있다 라는 내용이다
예제 비슷하게 장난 같은걸 쳐봤다
3번은 왼쪽부터 쭉 읽으면 논리적으로는 완벽해보인다만 오류가 나온다
그 이유는 연산자 실행 순서 때문인데
모든 식에서(괄호없는 수식) * 보다 . 가 먼저 실행되기 때문에
(arr+1).member 가 실행되는것이다
그렇기에 괄호를 한번 더 쳐주어서 *가 먼저 실행되게 하면 정상 실행된다
안쓰던 더블포인터랑 포인터 배열 사용 했는데 장난치다보니까 나도 헷갈리더라ㅋㅋㅋㅋㅋ
미래의 나에게 알려준다....
'C++ > [책] C++ 기초 플러스' 카테고리의 다른 글
[ 254p ~ 280p ] 복합구문&콤마연산자, 관계표현식, tpyedef(define&using), 문자열 비교, while, do while, Range based for loop (0) | 2021.07.06 |
---|---|
[ 220p ~ 253p ] stl vector & stl array, 표현식, for, 증가&감소 연산자, 부수효과&시퀀스 포인트, 접두어 접미어 방식 (0) | 2021.07.03 |
[ 203p ~ 209p ] 문자열 상수 (0) | 2021.06.30 |
[ 179p ~ 203p ] 포인터, NULL&nullptr, New, Delete, 배열 포인터 (0) | 2021.06.28 |
[ 160p ~ 178p ] 구조체, 공용체, 열거체 (0) | 2021.06.03 |