본문 바로가기

C,C++/공부 낙서

공부하면서 빠트린 것들 끄적끄적 - 문자열, 배열, 클래스

char* s1 = "abc"; char s2[] = "abc";

s1은 문자열 상수, s2는 문자열 변수입니다. 

 

s1 정적영역에서 생성이 되었고 변경이 불가능합니다. s2는 배열의 시작 주소값을 가리키므로 메모리 위치는 바꿀 수 없지만 값은 바꿀 수 있습니다.

 

 

int Test_Array[10];가 있다면 Test_Array[10]는 배열의 첫번째를 가리킵니다.

 

배열은 연속된 메모리의 집합입니다. 하지만 리스트는 불연속적인 메모리로 구성되어 있어서

블럭 단위로 검사를 하는 캐시 특성상 적중률이 낮을 수 밖에 없습니다.

 

 

클래스의 내부 멤버 함수들은 암묵적으로 인라인화 됩니다.

함수의 인라인화는 컴파일 타임일 때 진행이 됩니다.

 

클래스에 가상함수가 선언이 되어있다면 그 클래스에 있는 모든 함수는 가상함수 테이블에서 관리됩니다.

클래스에 가상함수가 1개도 없다면 코드 영역에 시작 주소값이 저장됩니다.

 

함수 포인터 -> 함수 객체 -> 람다 함수 순으로.