포인터와
참조
8.1 포인터
-포인터의
개념과
이해
-변수가
“데이터륹
담는
메모리
공간”이라면
포인터는
메모리
공간의
위치륹
가르키는
변수이다
.
포인터메모리
8.1 포인터
-포인터의
개념과
이해
int* a; // int 형포인터NameCard* b; //NameCard 형포인터int a = 10; //int 형변수int* b = &a; //변수a의주소값을int* 형포인터변수b에// 대입시킴으로써b는a가위치한메모리를가리키게된다.
8.1 포인터
-포인터의
개념과
이해
8.1 포인터
-매개
변수로써의
포인터
void swap (int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int i = 2;
int j = 3;
swap (i, j);
-i와
j의
값은
서로
바뀌지
않는다
8.1 포인터
-매개
변수로써의
포인터
void swap (int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int i = 2;
int j = 3;
swap (&i, &j);
-swap(int* a = &i, int* b = &j) 이
되기때문에
swap 이
일어나게
된다
.
8.1 포인터
-new 연산자와
delete 연산자
특징스택스택은차곡차곡쌓아올린후, 위에서부터걷어내는방식의자료구조이다. 더이상사용하지않는변수나객체들을자동으로메모리에서제거되는장점이있다.
힙스택과달리사용자가임의로자유로운메모리공간을만들어데이터를사용자가원하는시점까지유지할수있다.
8.1 포인터
-new 연산자와
delete 연산자
-new 연산자는
피연산자가
자료형이나
클래스의
생성자륹
명시해주면
,
해당
자료형이나
클래스에
해당하는
만큼의
메모리륹
힙에
할당하고
그
메모리의
주소륹
반환한다
.
int* b = new int;
*b= 34;
int *b = new int (34);
8.1 포인터
-new 연산자와
delete 연산자
someclass(); //기본
생성자
someclass(int a);
…
someclass* a = new someclass; //기본
생성자
호출
someclass* b = new someclass(someInteger); // someclass(int a) 생성자
호출
delete a; // 힙으로부터
제거
8.1 포인터
-new 연산자와
delete 연산자
-클래스나
구조체의
인스턴스의
멤버에
접근핝
때는
“.”륹
사용하지만
포인터륹
거쳐
멤버에
접근핝
때는
“
->”륹
사용한다
.
class SomeClass
{
public:
int a;
int b;
};
// …
SomeClass* pobj = new SomeClass();
pobj-> a = 17;
pobj-> b = 24;
8.2 참조
-참조는
변수가
가지는
또
다른
이름이다
.
-참조는
포인터처럼
변수의
주소륹
갖고
있지만
, 실제
동작은
포인터가
아닌
일반
변수
(혹은
객체
) 처럼
한다
.
int a = 7;
int&b = a; // 변수
a에
대한
“int 형
참조
” b 륹
선언한다
.
8.2 참조
8.3 함수
포인터
반환형
(*함수
포인터
이륺
)(매개
변수
목록
);
// 함수
선언
int Plus(int a, int b);
// 함수
포인터
선언
int (*pFunction) (int a, int b);
pFunction = &Plus;
8.3 함수
포인터
8.3 함수
포인터
-멤버
함수에
대한
함수
포인터는
“클래스”별로
선언해야한다
.
반환형
(클래스::*함수
포인터
이륺
)(매개
변수
목록
);
int (MyClass:: *pFunction) (int a, int b);
MyClass obj; // 객체
선언
pFunction = &MyClass::Plus; // MyClass 의
Plus() 함수의
주소륹
함수
포인터에
대.
int result = (obj.*pFunction) (3, 7); // obj 객체의
Plus() 호출
8.3 함수
포인터