C언어 scanf 함수와 주소 연산자 & 정리

Yuno·2025년 4월 4일
0

1️⃣ scanf 함수란?

  • scanf 는 키보드로 입력받는 데이터를 변수에 저장하는 함수

✨ 기본 형태

scanf("입력형식", &변수이름);
  • 입력 형식은 %d, %f, %c, %s 등 데이터 타입에 따라 달라짐

2️⃣ 주소 연산자(&) 란?

  • 주소 연산자 & 는 변수의 메모리 주소를 나타냄
  • scanf 는 값을 저장할 때 변수의 주소를 알아야 하므로, 주소 연산자는 &를 반드시 사용
#include <cstdio>

int main() {

  int score;
  
  printf("숫자를 입력해 주세요\n");
  scanf("%d", &score); // 10 입력 하면
  printf("%d", score); // 10 이 출력
}
  • %d : 10진수(정수) 를 입력받음
  • &score : 변수 score 의 주소(메모리 위치) 에 입력받은 데이터를 저장함

3️⃣ scanf 가 작동하는 원리

  • 프로그램이 실행되고 변수를 선언하면 컴퓨터는 자동으로 메모리에 공간을 확보
#include <cstdio>

int main() {

  int score;
  
  printf("숫자를 입력해 주세요\n");
  scanf("%d", &score); // 10 입력
  printf("%d", score); // 10 출력
  printf("%X", &score); // 메모리 주소 출력
}
  • 예를들면
int score;

이렇게 선언하면, 컴퓨터가 메모리에 4바이트 공간을 마련해둠

주소 (예시)변수이름
6DBCF1DC(빈 상태)score
  • 입력을 하면
scanf("%d", &score); // 10 입력

여기서 &score 의 주소 (6DBCF1DC) 에 입력된 값을 저장

주소 (예시)변수이름
6DBCF1DC10score
  • 이후 출력할 때
printf("%d", score);

메모리에서 값을 불러와 출력 (결과: 10)

  • 메모리 위치를 출력
printf("%X", &score);

메모리 위치값이 출력 (6DBCF1DC)


4️⃣ scanf 와 printf 의 비교

함수형태설명
scanfscanf("%d", &변수)변수의 주소로 데이터를 입력받아 저장
printfprintf("%d", 변수)변수의 값을 출력
  • scanf 는 반드시 변수 앞에 주소 연산자(&) 를 붙임

5️⃣ 변수명을 바꾸었을 때 주의사항

int score;
scanf("%d", &score);
printf("%d", score);

score 를 n 으로 바꾸면?

int n;
scanf("%d", &n); // 여기도 바뀌어야 함
printf("%d", n); // 여기도 바뀌어야 함
profile
Hello World

0개의 댓글