[C언어] 주소연산자와 입력함수

정해성·2022년 8월 16일
0

C언어

목록 보기
5/6

메모리 주소

메모리에 저장되는 모든 데이터는 메모리 주소에 의해 관리된다. 운영체제는 제한된 메모리에 데이터를 저장해야 하므로 주소개념을 데이터를 구분하여 관리한다. 즉, 메모리에 할당되는 모든 것은 주소를 갖는다.

주소 연산자 (&)

주소연산자 (&)를 사용하면 연산자 뒤에 오는 변수에 할당된 메모리 주소를 반환한다.(메모리 시작주소 반환)

	printf("%d", &num); -> 위 사진 경우면 103이 출력 된다.

입력함수 scanf()

표준입력장치인 키보드로 부터 데이터를 입력받을 수있는 함수이다. "%"로 시작하는 형식지정자를 사용해 데이터를 입력받아 저장한다.

	scanf("%d", &num); -> "입력될 형식지정자", &저장될 변수의 주소

여기서 변수 이름 앞에 주소연산자 (&)는 필수이며 입력된 데이터를 메모리에 저장하기 위해 변수의 시작주소를 얻기 위함이다.

예시 코드

#include <stdio.h>

int main(void)
{
	char ch;			//A
	short int num1;		//100
	int num2;			//200
	long int num3;		//300
	float f_num;		//1.1
	double d_num;		//5.2

	// 값 입력하고 enter 눌렀을때 뒤에 char를 입력받으면 enter 가져감
    // 값 입력 받을 시 enter,tab,space bar 검사해서 버린다.(char 는 가져감)
	// %*c -> 공백버퍼 없애준다. 
	
	printf("input short int ? ");
	scanf("%hd",&num1);

	printf("input char ? ");
	scanf(" %c", &ch);// 공백지정자 - 

	printf("input  int ? ");
	scanf("%d",&num2);

	printf("input long  int ? ");
	scanf("%ld",&num3);

    printf("input float ? ");
	scanf("%f",&f_num);

    printf("input double ? ");
	scanf("%lf",&d_num);

	printf("ch: %c, num1 : %hd, num2 : %d, num3: %ld, f_num : %f , d_num : %lf \n",
		                       ch, num1, num2, num3, f_num, d_num );

	return 0 ;
}
profile
코린이 공부중

0개의 댓글