const
-
참조형 리턴 타입 / const 키워드@ 16. 1 ~ 17. 1/C++ 2014. 3. 5. 23:23
함수나 메서드의 리턴값에도 참조령 타입을 사용할 수 있다.(포인터 역시) 당연하지만 참조형 리턴 타입은 리턴되는 객체가 함수/메서드의 종료 이후에도 계속 유효할 때만 사용할 수 있다. 로컬변수가 안되는 이유는 로컬변수는 함수가 구동되는 동안만 유요한 스택에 저장되어 있다가 함수가 리턴할때 스택과 함께 삭제된다. const 키워드 무언가 절대 변경되지 말아야 할 것을 지정한다. 데이터가 변경되는 것을 막고 싶다면 const int* p; p=new int[10]; p[4]=5; // 컴파일 에러 @ ip가 가리키는 데이터는 수정할 수 없게된다. 방식은 다르지만 int const* p로 선언해도 같은 효가가 나타난다. const 키워드를 int앞에 두든 뒤에 두든 기능적으로는 아무런 차이가 없다. 데이터가 ..
-
const의 위치에 따른 이야기..@ 16. 1 ~ 17. 1/C++ 2013. 2. 23. 21:12
일반 변수형.. cont int a=10; int const a=10; 같다. 똑같다 그냥.. 그런데.. 포인터형을 가지고 있을때.. int* const ptr; ---- (1) const int* ptr; ---- (2) 이 두개는 비슷해보여도..틀리다. 우선 1번은..자료형보다 앞에 있으니까..int* const // const가 자료형보다 뒤에 있으니까..(우측기준..) 이건 ptr이 해당 주소를 변경하지 못한다는 이야기임..주소가 상수 즉, int* const ptr=&a; 일때 ptr=&b; 가 안된다는 것이다. 물론..*ptr=값 이런식으로 해당주소의 값은 변경이 가능하다. 그리고 이것은 초기화가 필요하다. int* const ptr; 이런식이면 에러..int* const ptr=&a; 이런식..
-
const 이야기 1부@ 16. 1 ~ 17. 1/C++ 2012. 12. 26. 23:54
const int num=10;변수 num을 상수화 1. const int *ptr = &val;포인터 ptr을 이용해서 val의 값을 변경할 수 없음 1. const가 포인터 자료형 앞에 붙었을때*ptr = 10; // 사용불가 지시하는 값은 변경할 수가 없다.ptr = &val; // 사용가능 다른변수를 지시할 수 있다. 2. int * const ptr2 = &val2;포인터 ptr2가 상수화가 됨 2. const가 포인터 자료형 뒤에 붙었을때*ptr2 = 10; // 사용가능 값을 변경 할 수 있다.ptr2 = &val; //사용불가 지시하는 변수를 변경할 수 없다.