[따배시 6.20~21] array 소개, vector 소개 array는 항상 숫자가 들어가야 합니다. 몇개를 지정할걸지 해줘야 하는 것입니다. array my_arr = { 1, 2, 3, 4, 5 }; my_arr = { 0, 1, 2, 3, 4 }; my_arr = { 0, 1, 2 }; 갯수가 부족한 것은 상관이 없습니다. cout IT 프로그래밍/C++ 2024.03.30
[따배시 6 .19] 다중 포인터와 동적 다차원 배열 int main() { int* ptr = nullptr; int** ptrptr = nullptr; int value = 5; ptr = &value; ptrptr = &ptr; cout IT 프로그래밍/C++ 2024.03.30
[따배시 6.17~18] for-each 반복, void 포인터 for-each 반복 int main() { int fibonacci[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 }; //change array values for (int number : fibonacci) number = 10; //output for (int number : fibonacci) cout IT 프로그래밍/C++ 2024.03.30
[따배시 6.15 ~ 6.16] 참조, 포인터와 참조의 멤버 선택 연산자 #include using namespace std; int main() { int x = 5; int& ref_x = x; return 0; } 이게 참조해주는 간단한 식입니다. 여기서 만약 int& ref_x = 5; 이런 식으로 바꾸면 어떻게 될까요? 그럴 경우 오류가 나게 됩니다. 왜냐하면 5에는 주소가 따로 존재하기 않기 때문입니다. 하지만 const를 앞에 붙이면 가능합니다. const int를 붙이면 임시적으로 컴파일러가 주소를 만들어준다 이런 식으로 생각을 해주시면 됩니다. #include using namespace std; void doSomething(const int& x) { cout IT 프로그래밍/C++ 2024.03.30
[따배시 6.14] 참조 변수 #include using namespace std; int main() { int value1 = 5; int value2 = 10; int& ref1 = value1; cout IT 프로그래밍/C++ 2024.03.30
[따배시 6.13] 포인터와 const int* array1 = new int[length](0); 이렇게 되면 0으로 초기화가 됩니다. int* array1 = new int[length] {11, 22, 33, 44, 55, 66}; 위의 경우 11 22 33 44 55 66 까지 정상적으로 나오고 이후에는 쓰레기값으로 출력되게 됩니다. int value = 5; int* ptr = &value; *ptr = 6; 이럴경우 ptr을 6으로 바꿔지면서 value도 6으로 바뀌게 됩니다. 그런데 만약에 const int value를 하게 되면 포인터를 통해서 value를 읽으려면 point 또한 const를 붙여주셔야 합니다. int main() { const int value = 5; const int* ptr = &value; cout IT 프로그래밍/C++ 2024.03.29
[따배시 6.11] 메모리 동적할당 new와 delete int array[1000000]; 정적에 할당하는 메모리는 stack에 들어갑니다. 이 stack에는 메모리가 작습니다. 동적으로 할당하는 메모리는 hip에 들어가며 이 hip에는 메모리가 큽니다. 이렇기 때문에 코딩을 할 때는 정적메모리를 잘 활용하셔야 합니다. 큰 메모리를 만들려면 동적 메모리와 친숙해지셔야 합니다. int *ptr = new int; os로부터 받아온 4byte의 메모리를 그대로 사용할 수 있는 것입니다. int* ptr = new int{ 7 }; cout IT 프로그래밍/C++ 2024.03.29
[따배시 6.10] C언어 스타일의 문자열 심볼릭 상수, 포인터 사용의 유의점 char* name = "Jack Jack"; 위 같은 경우는 불가능합니다. 왜냐하면 Jack Jack은 임시로 만들어진 literal일 뿐인데 여기에다 포인터를 집어넣을 수는 없는 것입니다. 포인터는 메모리의 주소를 가리킬 수 있는 것이기 때문에 Jack Jack이 담길 곳이 없기 때문에 그런 것입니다. 하지만 여기에다 const를 붙여주면 가능합니다. const char* name = "Jack Jack"; 이는 특별히 name을 const로 고정해두면서 가능하게 해주는 것입니다. const char* name = "Jack Jack"; const char* name2 = "Jack Jack"; cout IT 프로그래밍/C++ 2024.03.29
[따배시 6.9] 포인터 연산과 배열 인덱싱 포인터 자체의 sizeof는 4바이트입니다. x64는 8바이트 #include using namespace std; struct MyStruct { int array[5] = { 9, 7, 5, 3, 1 }; }; int main() { MyStruct ms; cout IT 프로그래밍/C++ 2024.03.29
C++ [포인터 개념 정리] 포인터는 주소를 저장하는 변수입니다. int main() { int x = 5; int* ptr_x = &x; return 0; } 이런식으로 사용하면 되는데요. ptr_x는 x의 주소값을 저장해주는 포인터 변수입니다. int main() { int x = 5; double d = 123.0; int* ptr_x; double* ptr_d; cout IT 프로그래밍/C++ 2024.03.26