C언어 : 포인터의 작동원리
2020. 11. 11. 12:08ㆍ개인공부/C언어
드디어 왔다.. 내가 C언어를 공부하는 이유.. 제발 골수까지 빨아먹어 이해하고 싶다.
int a;
메모리주소를 가지고 있는 a와 그 메모리가 얼마나 공간을 차지할것이냐 정하는 자료형 int (4 bytes)
a = 7; //a라는 변수에 7을 대입한다.
실제 컴퓨터 내부에서는 a라는 변수의 주소 128로 시작해서 131에 끝난다. 그 공간에 7이라는 데이터를 저장.
a를 불러오고 b를 불러오면 cpu내의 임시공간에 저장되고 연산된다.
15라는 연산값이 나오면 cpu 임시공간에 저장되어 있다가 c의 메모리주소로 가서 4바이트치 메모리에 결과값 15를 저장한다.
내부적으로 변수가 주소를 사용하고 있다면, 그주소를 실제로 알고 싶다면 어떻게 해야 할까?
주소 연산자를 사용한다!
&가 붙으면 단항연산자로 실행된다.
주소값을 저장하는 변수를 선언할땐 *(asterisk)를 붙인다. (a의 주소가 128이니 *a_ptr엔 값으로 128이 저장된다)
정말 신기하다. int형 변수의 주소값을 가진 *a_ptr이 주소값 128을 가리키고 있으니 8을 *a_ptr 변수에 대입하면
a의 주소 128로 날아가 7대신 8이 저장된다.
*a_ptr 변수가 128인데 포인터 변수이기때문에 주소 128로 찾아간다. 찾아가서 그 메모리의 데이터를 가져온다(8)
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - NULL 포인터와 런타임 에러 (0) | 2020.11.11 |
---|---|
C언어 - 포인터의 기본적인 사용 방법 (0) | 2020.11.11 |
C언어 - 헤더파일 만들기 (0) | 2020.11.11 |
C언어 - 피보나치 예제와 재귀 호출의 장단점 (0) | 2020.11.11 |
C언어 - 이진수 변환 예제 (0) | 2020.11.11 |