[C의 포인터]

·2022년 6월 15일

C-Study

목록 보기
20/21
post-thumbnail

#220614 -220615
87-95

포인터란? 메모리 주소를 저장하는 변수

87. 포인터

초기화가 되어있는 배열을 process라는 함수로 호출!
주소를 스텍에 집어 넣고 접근한다!
✭ 메인 함수와 스텍의 범위가 다르다 ✭

88. 주소 연산자 &

  • 지역변수의 주소 출력하기!
  • 비트 연산자 '&' 가 아님!!!!
    • 비트연산자는 피연산자가 두 개, 주소연산자는 피연산자가 한개
/*비트연산자*/
const unsigned char result = num1 & num2;
/*주소연산자*/
- num 이라는 변수가 있으면 &num은 그 변수가 위치한 메모리 주소! (%p로 출력: 16진수)
- 실행할 때 마다 주소가 달라질 수 있음 
printf("Address or num: %p\n", (void*)&num);

89. 메모리 주소 저장하기

  • 데이터를 저장할 때 쓰는 것? -> 변수
  • 주소를 저장하기 위한 특별한 변수? -> 포인터!

90. 포인터의 의미

⭐️포인터? 주소를 저장하기 위한 '변수' ⭐️
사실은 변수인데 속에 담긴 내용은 '메모리주소'이다.

91. 메모리 주소에 저장된 자료형

포인터 변수를 선언할 때 '그 주소에 어떤 형의 데이터가 있는지' 명시하기 위해 포인터 앞에 자료형을 붙임!

  • int 포인터, float 포인터, char 포인터

92. 포인터 변수를 선언하는 방법

[코딩 표준]
int* num_address = # 

int* char* float*

93. 포인터 변수를 부르는 방법

void save_address(void)
{	
	/* num에 저장된 주소가 0x4800 이다!*/
	int num = 10; 
    
    /* 메모리 차지하는 곳 (0x0400) 에 저장된 메모리 주소 = num의 메모리 주소(0x4800) */
    
    int* num_address = #
}

⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️
포인터란? -> 메모리 주소를 저장하는 변수
⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

이 변수는? -> 메모리 어딘가에 저장

num -> a (0x0400) / num_address (0x0400)

94. 포인터 변수의 실제 메모리 뷰

1). num에는 10이 들어가있고
& num주소로 가보면 0x 004ffaf8{10} 이라는 주소에 있음
실제 그 메모리로 가면 0a (10)이 들어가 있음

이 주소를 num_address 값에 넣었다

2). num_address
&num_address 의 주소로 들어가봅시다

이 주소로 가보면 0x 004ffaf4 {0x004ffaf8{10}}
00 4f af f8

num_address의 값에는(안에는) num의 주소가 0x004ffaf8{10} 가 들어있음

95. 포인터의 비유

profile
Hakuna Matata

0개의 댓글