포인터란?
지금까지 우리가 c언어를 배우면서 c언어의 꽃은 포인터다 라는 말은 수 도없이 들었을 것입니다.
이렇게 질리도록 들은 포인터란 무엇일까? 바로 우리가 지금까지 셀수없이 많이 사용한 변수들의 메모리공간
입니다. 변수 a를 설정하였으면 메모리에 그것을 할당하는 주소가 생길것 입니다. 이러한 주소를 가리키는 변수를 포인터라고 합니다.
포인터를 사용하는 이유
그렇다면 우리는 포인터를 왜 사용할까? 우리가 함수를 사용하면서 main함수에있는 지역 변수들을 전보 전역 변수로 바꾼다면 많이 지저분해 질것이다. 그렇다면 main함수에있는 변수의 주솟값을 바로 보내주는것이다. 그러면 속도가 더욱 향상 될것입니다.
포인터 선언
그렇다면 이러한 포인터는 어떻게 사용할까? <변수의 자료형>*<이름> = &<변수의 이름>;
int * p = #
포인터 사용법
포인터를 사용하면 변수의 메모리 공간에있는 값을 바꿀수 있기 떄문에 swap 함수를 만들 수 있습니다.
변수 x와y에 값을 입력받고 swap함수를 호출해서 x와y의 주소를 보내줍니다. 그러면swap 함수에서 받은 주솟로 x와y의
주소 안에 있는 값을 변수tmp를 사용하여 바꿔줍니다. 그러면 x와y 주소 안에 있는값이 바뀌기 때문에 main함수 에 있는x와y에게도 영향이 가서 바뀌게 됩니다.
다중 포인터
아까 위에서 말했다시피 포인터도 주소를 가리키는 변수이다. 그래서 포인터를 가리키는 포인터를 표현하는것이 다중 포인터이다. 한마디로 포인터의 포인터 인것이다. 선언 방법은 <자료형>**<이름>=&<가리킬 포인터>
int ** a =& b;
'report' 카테고리의 다른 글
리눅스 보고서 (0) | 2019.05.27 |
---|---|
C개인 프로젝트 보고서 (0) | 2019.05.17 |
동적할당과 메모리구조 보고서 (0) | 2019.04.17 |
함수 보고서 (0) | 2019.04.08 |
배열 보고서!! (0) | 2019.04.01 |