1. Pass by Value a 가 Pass by Value 되며 카피되면서 foo 에 a=0 이 들어가게 되고, 로컬변수 b는 a+1이니까 1이 들어가게 된다. 결국 값이 복사가 되는 것. 2. Pass by Pointer 함수에서 매개변수로 포인터를 받게 되면, 이 포인터는 함수 바깥에 있는 변수에 접근 가능하다! 만약 예를 들어서, fooP() 에 *ap = 100 을 써주게 되면 어떻게 될까? fooP가 동작할 때 a 공간에 접근을 해서 값을 100으로 바꿔주는 코드가 된다. (접근 가능!) 3. Call by Reference 레퍼런스를 받는 fooR() 함수를 만들어주고 콜 해 주는 코드를 짜 보자. 사실 포인터로 넘겨주는 함수와 레퍼런스로 넘겨주는 함수 두 개는 똑같다. Compiler E..
포인터
1. 구조체형의 원리 이전 글에서 배운 사용자 정의형 enum과 같이, 구조체형(structure data type) 또한 프로그래머가 만들 수 있는 사용자 정의형 중의 하나이다. 구조체형은 다른 형들을 묶어주는 기능이 있는 것이 특징이다. 예를 들어, 차량 번호(int형)와 연료의 양(double형)과 같은 다른 형의 값을 하나로 묶어서 차의 기본적인 속성을 표현할 수 있는 것이다. (쉽게 이해하면, 차 라는 물체를 코드로 구현해 주는 것이다.) 구조체에 어떤 형을 묶을지 결정하는 일을 구조체형 선언이라고 한다. 구조체를 선언할 때에는 struct 키워드를 사용한다. 구조체형의 선언 struct 구조체형명 { 형명 식별자; 형명 식별자; .......... }; 구조체형은 블록 안에 변수와 같은 요소들..
배열의 원리 이해하기 프로그램 안에서 많은 데이터를 처리하는 경우에 사용한다. 예를 들어 50명의 학생이 있는 반의 시험 점수를 다루는 프로그램이 있다면, test1 부터 test 50까지 총 50개의 변수를 일일이 준비해야 한다. 이 경우 코드가 복잡해지고 읽기 어려워지기 때문에 배열(array)이라는 메커니즘을 활용하여 편리하게 코드를 작성할 수 있다. 배열은 같은 형의 값을 동시에 여러 개 기억하기위한 편리한 기능을 제공한다. 배열은, 같은 이름을 가진 상자들이 모여서 줄 지어 있는 모습을 상상해 보면 된다. 배열에 저장된 각각의 상자는 배열의 요소(element)라고 한다. 배열 선언하기 형명 배열명[요소 개수]; 예를 들어, int형 값을 5개 기억할 수 있도록 요소 개수를 5라고 지정한 배열 ..
주소(address) : C++에서의 주소란, 메모리 위치를 직접 가리킬 때 사용되는 메모리에서의 '주소'를 의미한다. 컴퓨터 안에서 사용되는 주소이기 때문에 16진수를 사용하여 0x1000, 0x1004... 이런 식으로 표현하는 경우가 많다. 인간과 컴퓨터를 비교해 보면, cpu를 두뇌로 메모리를 노트로 생각해 볼 수 있는데, cpu(머리속)에 있는 변수와 객체 등등의 개념을 사용하려면 메모리(노트)에 올려놓고 써야만 한다. 이때 노트에 쓴 것들의 위치가 존재하듯이 메모리를 할당해야만 한다. 그래서 그 메모리마다 고유의 주소를 갖게 되는 것이다. 1. 주소 변산자 & - 변수의 주소(메모리에서의 위치) 확인하기 변수값이 메모리의 어느 부분에 저장되어 있는지 그 주소를 확인할 때에는 주소 변산자(add..