본문 바로가기
728x90
728x90
SMALL

전체 글145

C++ Chapter 6.15 : 포인터와 참조의 멤버 선택 포인터와 참조의 멤버 선택 포인터 혹은 참조로 구조체/클래스 멤버에 접근할 수 있다. #include using namespace std; struct Person { int age; double weight; }; int main() { Person person; person.age = 5; /* 참조로 멤버에 접근 */ Person &ref = person; // 구조체 참조 변수 ref.age = 15; /* 포인터로 멤버에 접근 */ Person *ptr = &person; // 포인터 참조 변수 ptr->age = 30; // 포인터로 멤버에 간접참조로 접근할땐 -> 화살표를 사용한다. (*ptr).age = 20; // . 가 * 보다 우선순위가 높기 때문에 간접참조를 하기 위해선 *를 괄호로.. 2024. 2. 12.
C++ Chapter 6.14 : 참조와 const int x = 5; int & ref = x; x 가 메인이고 ref 는 x의 별명일 뿐임을 인지하자. int x = 5; const int & ref = x; // ⭕ 가능 : ref를 통해 x값을 수정하는건 안되고 읽기만 가능 const int x = 5; int & ref = x; // ❌ 불가능 : ref 가 상수인 x 값을 수정할 우려 때문에 const int x = 5; const int & ref = x; // ⭕ 가능 : const가 붙으면 ref 가 참조 대상인 x 값을 수정 못하니까 우려가 사라지므로. const int x = 5; const int & ref = x; const int & ref2 = ref; // ⭕ 가능 : 참조 변수가 또 다른 참조 변수를 참조하는것 가능. x의 .. 2024. 1. 21.
C++ Chapter 6.13 : 참조 변수 참조 변수 int & 포인터보다 사용하기 편하다. 별명 이라고 생각하자. int value = 5; int *ptr = &value; // 포인터 int &ref = value; // ❤참조❤ cout 2024. 1. 15.
C++ Chapter 6.12 : 포인터와 const const int * ptr : const가 맨 앞에 붙은 경우 const int a = 5; // a 는 상수 int b = 10; // b는 그냥 변수 const int *ptr_a = &a; // a를 가리키는 포인터 const int *ptr_b = &b; // b를 가리키는 포인터 int *ptr_f = &a; // ❌ 안된다. ptr_a = nullptr; // 가능 const가 데이터 타입 앞에, 즉 맨 앞에 붙으면 **간접참조**로 값을 수정하는게 불가능하다. ο a 는 const가 붙은 상수이므로 값을 바꿀 수 없다. ο 따라서 간접참조로 인하여 a의 값을 바꾸지 못하도록 a를 가리키는 포인터 ptr_a 또한 const int * 타입으로 선언이 되야 한다. ο b는 상수가 아닌 그냥 변.. 2023. 11. 19.
C++ Chapter 6.11 : 동적 할당 배열 정적 배열 const int length = 5; int array[length]; 반드시 배열의 크기가 프로그램이 실행되기 전에 미리 컴파일 타임에 정해져야 한다. 프로그램 실행 전에 미리 공간을 할당 받기 때문! 배열의 크기를 리터럴 상수가 아닌 변수로 넣고 싶으면 const 가 붙은 변수, 즉 상수여야 한다. 정적 배열은 주소를 바꾸는 것이 불가능하다. ο array의 배열 이름은 array를 주소를 담고 있는 상태. 다른 배열의 주소를 담게끔 값을 바꿀 수 없다. 동적 배열 #include using namespace std; int main() { int length; cin >> length; // 실행 중에 입력으로 결정된 크기 int* array = new int[length]; // 동적.. 2023. 11. 12.
C++ Chapter 6.10 : 메모리 동적 할당 new와 delete 동적 메모리 할당이란? 필요할 때만 메모리를 할당받아서 사용하고 반납할 수 있다. ο 지역변수나 배열은 { } 를 벗어나면 메모리에서 사라지므로 여러 함수에서 사용하기에 부적합하다. ο 전역 변수나 배열은 여러 함수에서 사용할 수 있지만 프로그램의 시작부터 종료까지 메모리를 점유하므로 공간을 비효율적으로 사용하게 됨 ο 이에 반하여 동적으로 메모리를 할당 받으면 내가 필요할 때 { } 범위에 구애받지 않고 사용하고 원하는 기간동안 사용 후 메모리를 반납할 수 있다. 실행 중에 사용될 메모리 양을 컴파일 타임에 미리 예측하기가 힘들 때 ο 정적 배열같은 경우 배열의 크기를 미리 컴파일 타임때 알고 있어야 메모리를 할당 받을 수 있는데 그렇기 때문에 일부러 배열 크기를 미리 크게, 넉넉하게 할당받고 실행하는.. 2023. 11. 5.
728x90
728x90
LIST