C++ Programming

[ C++ ] 네임스페이스 :: namespace 포인터 Pointer

psy_er 2021. 11. 5. 02:45
728x90

[ C++ ] 네임스페이스 :: namespace 포인터 Pointer

 

네임스페이스

네임스페이스는 특정 공간에 이름을 붙여 주기 위한 문법 요소이다..

::을 사용하고 이름 공간 중첩 가능하다.

문자열을 매개변수에 전달하려고 할 때 const char* str을 사용한다.

 

const 레퍼런스

const 레퍼런스는 상수 기능을 한다. 포인터로 값을 수정하려고 해도 수정 불가능하다.

문자열은 기본적으로 포인터를 사용해 간접 참조 활용한다.

 

모자란 인수 대신 매개변수의 기본값이 사용된다.

기본값 설정은 함수 선언 부분(맨 앞)에(맨앞) 명시한다. void function(int n = 0);

따라서 매개변수의 기본값은 오른쪽에 치우쳐 기술되어야 함.

 

JAVA에서는 매개변수의 기본값을 설정할 수 없다.

C의 메크로 함수는 type 체크 불가능, 수식 대체 ,, 괄호가 필수라 사용 불편하다.

인라인 함수는 type 체크 가능, 함수 대체, 괄호 자동생성, 반복반복 X, switchX, 재귀X

함수 구현 시inline 키워드 사용. 간단한 처리 가능. inline int SQUARE(int x){return x;}

 

 

포인터 Pointer

포인터 : 어떤 다른 값이 저장되어 있는 메모리 주소를 가지고 있는 상수/변수

 

*p = 5 // p가 가리키는 곳의 값을 5로 변경한다.

p , p+1 // 주소를 이동한다.

*p1 = *p2 // p1이 가리키는 곳의 값을 p2가 가리키는 곳의 값으로 변경한다.

p1 = p2 //p1의 주소 값을 p2의 주소 값으로 변경한다.

 

 

포인터가 사용되는 경우

 

1. 함수의 인수로 변수에 대한 주소 값&이& 전달되는 경우

-함수가 2개 이상의 값을 반환해야 할 때

-함수 인수로 큰 구조의 구조체 변수가 사용될 때

 

2. 함수의 인수로 배열 이름이 사용된 경우

배열 요소들을 함수 내에서 접근하고자 할 때

 

 

포인터는 배열의 첫 번째 요소의 시작 주소를 가리키는 것이다.

레퍼런스는 기존 l-value에 대해 또 다른 이름을 정의. 별명을 설정함. 변수X,

레퍼런스 2개가능.

 

int a;

int& r = a; //주의** 반드시 선언과 동시에 초기화해야 한다..

r = 20; 바로 a의 값을 20으로 바꿀 수 있다. 포인터와 비슷한 개념.

 

포인터와 레퍼런스를 비교한다면, 포인터는 간접 참조할 대상을 변경할 수 있지만, 레퍼런스는 선언과 동시에 간접 참조 대상을 지정받기 때문에 참조 대상 변경이 불가능하다.

 

따라서 참조 대상을 변경해야 한다면 포인터를 사용해야 한다..

 

 

728x90