나중에 참고할 목적으로 작성해 놓는다, ㅋ. 원리가 없기에 외워야 하나 그러긴 귀찮은데 필요한 경우가 있으니 말이다, ㅋ.
code는 /chip_data/GEO/make_tissue_specific_gene_expr_fig.cpp
95번째 줄의 기본형태는
const unsigned char (* const V )[3]
앞의 const 에 의해 포인터형 변수 V 가 가리키는 주소에 있는 값을 변경하지 않을 것임을 명시,
뒤의 const 에 의해 포인터형 변수 V 가 가리키는 주소를 변경하지 않을 것임을 명시,
unsigned char 의 3개의 요소로 된 배열을 가리키는 포인터 선언 방식.
역시나. 한 눈에 와 닿지 않는다. 그림으로 표현해 보자.
V 라는 변수 역시 메모리에 존재하는 값이니 그 자체가 주소를 갖고 있다. 뒤의 const 는 이 주소에 있는 값, 즉 또 다른 주소, 그 주소를 고정시키는 역할. 앞에 있는 const 는 그 주소에 해당하는 변수의 값을 고정하는 역할.
따라서, 일반적으로 함수의 실행 결과를 반환하기 위해 parameter로 pointer 를 받을 땐 뒤의 const 를 사용하면 된다, 코드 96, 97 번째 줄처럼. 즉, 이 경우 반환받아야 할 변수의 주소를 넘길테니 이 주소는 변경이 되지 않아야 하므로 const 를 사용하면 되고, 그 주소에 있는 값은 변경이 되어야 하니 const 는 사용하지 않으면 된다.
'컴퓨터 > 전산, 그 외' 카테고리의 다른 글
으... 윈도우즈 10, 아주 짜증난다 (0) | 2016.08.11 |
---|---|
여러 프로그래밍 언어를 익히는 것 (1) | 2016.02.08 |
맥북 프로 레티나의 해상도 확인 (13인치) (2) | 2014.01.27 |
new 가 무서워, ㅋㅋ. (0) | 2013.05.01 |
colormap 사용하기 (0) | 2013.01.24 |