iOS/정보처리기사

[정보처리기사] C언어 - scanf 와 변수(feat. 포인터 변수)

Chafle 2022. 6. 9. 22:00
반응형

포인터에 대한 기초적인 개념은

 

https://accompani-i.tistory.com/204

 

[정보처리기사] C언어 - 포인터의 이해(feat. 포인터변수, 주소, 주소값)

포인터란? 메모리의 위치를 표현한 기호 메모리의 주소값을 표현한 변수 포인터의 핵심은 그림을 그리는 것 메모리를 우리 생활에 비유하자면, 메모리 주소는 우리가 현재 살고 있는 집의 번지

accompani-i.tistory.com

여기를 거쳤다가 오시고

 

오늘은 포인터 변수로 활용되는 scanf를 알아보도록 하겠습니다.

 

 

 

 

 

 

scanf란?

 

사용자의 키보드로 입력받을 때 사용하는 함수

 

 

 

scanf의 형식

 

scanf("%d", 변수의 주소의 값);

 

"%d" -> 어떤 값을 입력 받겠다.

변수의 주소의 값 -> ex. int b; 로 선언 했다면, &b;(메모리 주소 X, 그 주소의 값 O)

 

 

메모리의 주소, 주소의 값 차이가 있으니, 위 링크 다녀오세요

 

 

scanf 사용법

 

int a;

scanf("%d", &a); %d: 정수를 입력 받을 건데, &a: a의 주소의 값에 입력을 받을 것이다

printf("%d", a);

 


 

반응형

 

 

ex.

scanf()함수의 입력으로 90을 입력했다고 가정했을 때

실행한 결과는???

 

 

int main() {

int i = 10;

int j = 20;

int *k = &i;

 

scanf("%d", k);

printf("%d, %d, %d₩n", i, j, *k);

return 0; 

}

 

 

해설

 

포인터 변수 k = &i(i의 주소) 변수 메모리 주소 메모리 주소의 값  
101   100    
i 101 10 90
j 102 20  
  103    

 

i,j는 임의로 메모리 주소를 준다.(101,102 내가 맘대로 준거임)

scanf("%d", k); -> 정수를 입력 받을 건데, k는 메모리 주소의 값을 90으로 넣겠다. (

 

printf("%d","%d","%d₩n", i, j, *k);

i = 90

j = 20

*k: k의 주소의 값인 90

 

답 90,20,90

반응형