pointer 3

c++ 참조 정리

목록 1. 선언과 초기화 2. 관점에 따라 달라지는 참조 어셈블리 관점에서 참조 c++ 관점에서 참조 3. 포인터 대신 참조를 사용하는 이유 4. 참조의 단점과 해결방안 쓰기 기능을 막는 방법 가독성을 높이는 방법 5. 참조에 포인터를 포인터에 참조를 포인터로 사용하던 걸 참조로 넘겨주는 경우 참조로 사용하던 걸 포인터로 넘겨주는 경우 선언과 초기화 int number = 1; int& ref = number; int& ref2;// error ! ref2 = number; 참조는 선언과 동시에 초기화를 해줘야 한다. 참고로 참조는 산술 연산을 제공하지 않는다. ref++;// error ! 뒤에 말하겠지만 참조는 특정 바구니의 가명과 같다. 즉, 하나의 바구니에 종속되기 때문에 산술 연산을 통해 참조가..

c++ 포인터 정리

목록 1. 포인터 2. 선언과 초기화 포인터 선언 포인터 초기화 포인터는 고정 크기를 가지는데 왜 타입을 명시할까? 포인터 사용 예시 ( 1 ) 포인터 사용 예시 ( 2 ) 3. 메모리 크기 불일치 4. 포인터 연산자 주소 연산자 간접 연산자 산술 연산자 간접 멤버 연산자 5. 포인터를 매개 변수로 받는 함수의 보험 const가 *앞에 위치 const가 *뒤에 위치 6. 포인터가 가리키는 주소가 존재하지 않는다? nullptr을 넘겨주는 포인터 7. 다중 포인터 포인터 int number = 1; 해당 코드의 의미를 알아보자. number라는 이름의 4 byte 정수 타입의 바구니를 만든다. number라는 변수는 스택 메모리에 할당한다. number = 1은 number 바구니에 정수 1을 넣는다. 즉..

cpp 포인터와 배열

포인터 const char* test1 = "Hello World"; 포인터는 주소를 담는 '바구니'이며, 상수이므로 수정할 수 없다. test1[시작 주소]는 8 byte 크기를 가진다. test1이 가리키는 주소로 가면 [H][e][l][l][o][][W][o][r][l][d][\0]을 볼 수 있다. 배열 char test2[] = "Hello World"; 배열 이름은 배열의 시작 주소를 가리킨다. 하지만 포인터처럼 바구니를 만들지 않는다. 따라서 포인터처럼 정해진 크기를 가지지 않으며, 현재 test2가 가리키는 주소의 배열은 12 byte 크기를 가지고 있다. 또한 언제든지 각 index에 위치한 데이터를 수정할 수 있다. 배열을 함수의 인자로 넘기기 void Test(char a[]) { a[..