강의 주제 : const 변수,함수,객체, 동적메모리,정적메모리
강의 키워드(주요 단어) : const,메모리
주요 내용 요약
const 변수 : 변수에 const라는 키워드를 사용해 상수의 의미를 갖게하여 그 의미를 변경할 수 없게 함.
const 함수 : 함수 선언시 함수,매개변수,리턴형에 const를 선언하여, 이들이 "읽기전용"임을 나타냄.
const 멤버 : const형 멤버함수는 해당 멤버변수를 변경하는 치환연산을 수행 할 수 없고, 지정된 함수에서 멤버변수의 값을 변경할 수 없다.
const 객체 : 객체 정의 시 클래스명 앞에 const를 추가, 객체가 const로 지정되면 해당 객체에 초기화된 데이터는 변경불가, const로 지정된 멤버함수만 호출 가능함.
생성자와 소멸자에서는 const를 사용할 수 없음.
포인터를 사용하게 되면 기계어나 어셈블리 언어처럼 메모리의 주소를 이용해 메모리의 내용을 직접 접근할 수 있음.
포인터로 메모리주소를 이용해 접근가능
메모리에는 위치를 구분하기 위해 순서대로 번호가 붙어있는데 이것을 메모리의 주소, 번지, address라 함.
* : 선언문(구두점) vs 실행문(연산자)
선언문 : 포인터를 선언(구두점)할 때
실행문 : 주소로 가서 값을 가져올 때(연산자)
메모리의 주소를 저장하려면 일반 변수가 아닌 포인터를 사용해야함.(int *x;)
포인터를 초기화 하고싶을때는 자료형 *포인터_변수명 = 초기화 주소; 로 초기화 할 수 있다.
s[i]==*(s+i) : 배열의 이름은 그 배열의 시작 주소를 저장하는 포인터
동적메모리를 사용하는 이유는 지역변수는 자신의 지역에서만 유요한데, 전역변수처럼 프로그램이 끝날 때 까지 값을 유지하고싶을 경우, 프로그램 작성시필요한 메모리 공간의 크기를 모르고, 프로그램을 실행할 때 메모리양을 결정해야 하는 경우에 사용함.
하지만 스택보다 느리고, 동적으로 확보된 메모리에 이름이 없기 때문에 주소를 사용하므로 포인터에 대한 이해가 필요함.
정적메모리 vs 동적메모리
정적메모리 - 컴파일시 필요한 메모리 할당, 사용하지 않는 메모리까지 잡아 낭비, 너무 큰 메모리는 할당 불가,Visual Studio에서 기본 스택 크기는 1MB
동적메모리 - 실행시 필요한 메모리 할당, 필요한 만큼 잡음, 포인터를 사용하여 접근,new/delete 사용(new : 메모리 할당, 할당된 메모리 시작주소 리턴, delete : 할당받은 메모리 해제)
감상 평
분량이 조금 있다보니 생각보다 이해할 양이 많았다.
강의 이해도
60% 양이 조금 있다보니 이해하는데 어려움이 약간 있었다.