개발/C++

11장 포인터와 동적 메모리 관리(전)

민돌이2 2019. 5. 8. 03:03

한성대학교 김설현교수님 강의내용을 바탕으로 작성함

 

포인터의 기본사항

일반적인 변수는 데이터 값(정수, 실수 값, 문자 등)을 저장하지만, 포인터는 데이터값이 저장된 변수의 메모리 주소를 저장

int count =5; //변수
int *pCount = &count; //포인터

int 4byte, short 2btye, char 1byte지만 포인터는 변수조율에 상관없이 4byte할당

 

선언된 다음에는 간접참조 연사자(*)를 통해 포인터 변수가 가리키는 값에 접근 가능

count++;
(*pCount)++;

 

포인터와 const의 사용

const키워드를 사용하여 상수를 선언할 수 있고, 일단 상수로 선언하면 변경할 수 없기에 선언과 동시에 초기화 해야한다.

double radius = 5;
double * const pValue = &radius; //선언과 동시에 초기화
const double * pValue = &radius; // 포인터가 상수가 아니라 데이터가 상수가 된다.

 

배열과 포인터

배열이름은 배열의 시작 주소를 나타낸다. 아래와 같이 선언했을 떄, list는 시작주소는 &list[0]이다.

int list[6] = {11, 12, 13, 14, 15, 16};

list+1은 list+sizeof(int)가 된다.

 

 

 



포인터 인수 전달
함수에서  배열 매개변수는 항상 포인터 매개변수를 사용하는 것으로 대체될 수 있다.
void m (int list[] , int size) 
void m (int* list, int size)

둘 다 list는 배열의 시작주소 

728x90