관리 메뉴

도드넷

C++ 포인터 개념정리, 총정리 본문

창고/C++ [폐쇄]

C++ 포인터 개념정리, 총정리

도드! 2014. 10. 22. 10:44




C++ 포인터 개념정리, 총정리



1. 포인터란?


다른 변수의 주소를 저장하는 변수



2. 포인터 선언하기


변수타입 *포인터변수이름;


* ← 에스크리터 연산자 (포인터)



3. 포인터에 주소 저장하기


변수타입 *포인터변수이름 = &변수이름;


& ← 앰퍼센트 연산자 (주소)



4. void *변수이름


모든 타입의 변수 주소를 저장할 수 있음

단, 포인터가 가리키는 값을 사용하려면 임시변수에 저장해서 형변환해서 간접적으로 사용해야함!


형변환하는 법 ↓



5. 포인터와 배열


모든 배열의 이름은 상수 포인터첫번째 요소의 주소값을 저장한다.


예를 들어 char a[99]; 라는 배열이 있다고 하자, 


a  는 &a[0] 라는 주소를 저장하고 있다.

*a 가 가리키는 것은 a[0] 이다.

 포인터명에 숫자를 더해서 원하는 배열의 요소를 가리킬 수 있다.  

*(a+1) → a[1]


또 반대로, 어떤 포인터에 배열의 이름을 저장해서 그 포인터를 배열로써 사용할수도 있다.



6. 포인터와 2차원 배열 


x[i][j] = *(x[i] + j) = *(*(x + i) + j)



7. 포인터와 함수 (Call By Reference)


Argument을 주소로, Parameter를 포인터로 받는 함수

불러온 데이터의 값을 함수 사용중 오염/변형 가능하는 것에 주목.




8. 함수 포인터


함수 포인터는 함수이름(주소) 저장.


어떤 함수를 또 다른 이름으로 사용하거나 

함수포인터를 Parameter로 설정하여 함수이름(주소)를 Argument로 받을 수 있음.



9. 함수 포인터 선언/사용하기

 

선언 : 리턴타입 (*함수포인터이름)(Parameter);

* 저장하려면 함수와 Parameter가 동일해야함


저장 : 함수포인터이름다른_함수이름;


사용 : 함수포인터이름();



10. 포인터와 구조체


포인터 구조체는 구조체변수의 주소를 저장함.


선언 : struct 구조체이름 *포인터이름;


저장 : 포인터이름 = &구조체변수이름;


요소접근 : 포인터이름->요소이름;



"세상에는 포인터를 이해하는 사람과 그렇지 못한사람으로 나뉜다...."


저는 아직도 "이딴걸 왜쓰는거지" 라고 생각드니까 후자에 속하는것 같으므로 

그냥 이게 뭔지만 알고 넘어가렵니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 우리모두 포인터같은건 없는 자바를 공부합시다






반응형
Comments