피씨컴의 기울어진 공관

13일차

프로그래밍/공부 2013. 1. 29. 13:09

swap의 특징 : 1대 1 교환

 

● ● 포인터 심화

● const

변수앞에 const를 붙이면 해당 변수가 상수화 된다.

변수가 상수화 되기 때문에 곡 선언시에 초기화 해야한다 그렇지 않으면 값을 변경 할 수 없다.

 

const int max = 5;

int a[max] = {};             가능함

const 변수는 변수를 상수화 했기 대문에 선언이 가능하다

C++에서만 가능

 

● 포인터와 const

포인터는 일반변수보다 복잡하다

keypoint는 const의 위치

 

int a = 10

int b = 20;

const int * p = &a;

*p = 10;        // 안됨

 p = &a;        // 됨

*p가 상수화 되는 것은 변수의 상수화이다  p의 주소값은 변경이 된다.

※ 근데 저상태에서 a=10 의 직접대입은 되는듯 ?

 

int a = 10

int b = 20;

int  *const p = &a;

*p = 10;        // 됨

 p = &a;        // 안됨

p가 상수화 되는 것은 주소값의 상수화이다

*p의 주소값은 변경이 된다.

 

 

*의 기준으로 const 위치에 따라 다름

*앞에 붙으면 포인터가 가리키는 변수의 값 변경 불가능

*뒤에 붙으면 포인터 변수의 주소값이 변경 불가능

const int const *p 이것은 const int *p와 같다

즉 자료형은 const와 연관성이 없다.

 

● 포인터와 + 연산자

해당 자료형 크기만큼 주소값을 더한다

int 형 변수일 경우

1000(주소) + 1 = 1004

1000(주소) + 2 = 1008

1000(주소) + 3 = 1012

 

모배열은 포인터이기 때문에 + 를 사용하면 해당 메모리 공간에서 자료형 만큼 이동한 주소를 의미

포인터의 * 연산자는 해당 주소값에 위치한 변수를 의미한다

 

*(p+i) = 우선순위 때문에 괄호로 포인터 차단

 

'프로그래밍 > 공부' 카테고리의 다른 글

15일차  (0) 2013.01.31
14일차  (0) 2013.01.30
12일차  (0) 2013.01.28
11일차  (0) 2013.01.25
10일차  (0) 2013.01.24
Posted by 피씨컴