분류 전체보기 26

C++ 동적 할당

int main(){ int* p1{}; int* p2{}; int* p3{}; p1 = new int{}; p2 = p1; p3 = p1; *p1 = 100; printf("%d %d %d \n", *p1, *p2, *p3); delete p1; printf("%lld\n", (__int64)p1); printf("%lld\n", (__int64)p2); printf("%lld\n", (__int64)p3); printf("%X\n", (__int64)*p2); } 포인터 변수 3개를 선언을 한 후 하나의 포인터 변수에만 동적 할당을 해줍니다. 유니폼 초기화를 위해서 {}도 붙여줍니다. 동적 할당은 new로 선언은 진행 해주고, 그 뒤에 자료형을 붙여줍니다. 그 후로 포인터 배열 p2와 p3 에 p1을..

c++ 2024.01.17

Call by value 와 Call by reference

call by value 와 call by reference를 알아야 한다. call by value의 간단한 예시를 들어보도록 해보자 #include void Swap(int a, int b){ int temp = a; a = b; b = temp; } int main(){ int A = 1; int B = 2; Swap(A,B); printf("%d %d\n",A,B); } Swap이란 함수가 호출이 되었지만, 이는 call by value로 호출되어 변수 A, B에 있는 값들만 복제되어 Swap으로 넘어간 것이다. void는 return 문이 존재하지 않기 때문에 Swap 함수 내에서 인자 a, b의 변수 값만 바뀌었다. 결과적으로 main내에서는 바뀐 것이 없으므로 예상 결과값인 A=2, B=1 ..

c++ 2024.01.15

c++ 생성자(constructor)

#include class A { public: A(); }; A::A() { printf("기본생성자입니다\n"); } int main() { A t; } 생성자는 한 마디로 초기화라고 생각하면 된다. 선언은 클래스 명과 동일하여야 하고, 리턴값은 없다. #include class A { public: A(); A(int); A(int, int); }; A::A() { printf("기본생성자입니다\n"); } A::A(int a) { printf("매개변수가 int인 생성자입니다\n"); } A::A(int a, int b) { printf("int형 매개변수가 두 개인 생성자입니다.\n"); } int main() { A t1; A t2(1); A t3(1,2); } 생성자의 형태의 따라서도 초기화..

c++ 2024.01.10