프로그래밍 언어/C언어

C언어 기초이론 (포인터 기본이론)

chobyeonggyu03 2024. 6. 13. 13:56

포인터란?

type이 곧 주소인 변수 (저장하기로 한 값을 주소로 해석)

-포인터를 통해 내부 주소들을 엿볼 수 있기에 포인터를 직접 코딩하는게 프로그램 뒷단의 주소들의 구조를 간접적으로 파악하는데 도움됨

-포인터를 여러번 중첩하여 주소들을 여러 걔 연결시키는 것도 가능함

(+ 포인터에 쓰이는 * 표시는 *뒤에 있는 값을 주소로 생각해서 가봐라 라는 뜻임)

** 포인터 작동 원리 **

 

CPU (처리) memory (저장)

|---------------------| (address) |---------------------|

| | <=> | |

| ALU | (data) | |

| IP | <=> | |

| Register | (control) | |

| | <=> | |

|---------------------| |---------------------|

** 포인터와 관련된 CPU 구성 **

-ALU(Arithmetic Logic Unit)라는 논리연산자

-IP(Intellectual Poperty라는 회로 설계 블록

-Register라는 데이터들을 작업하기 위해 임시저장하는 메모리 공간

(+Memory는 주소(300번지), 변수이름, 데이터(내용)등으로 구성되어 있으며,

데이터들이 모델링을 거쳐 저장됨)

1) address : IP 300

date : (변수에 저장된 내용)

control : Read

라고 CPU에서 memory에 보내면 300번지 주소에 저장된 내용을 CPU로 읽어들임

2) address : IP 600

date : (변수에 저장된 내용)

control : Write

라고 CPU에서 memory에 보내면 memory내의 600번지 주소에 데이터들을 저장함

(+IP는 CPU랑 memory사이 주소와 관련된 일을 처리함)