본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 3.1 데이터와 자료형 ~ 3.3 scanf() 함수의 기본적인 사용법

728x90

3.1 데이터와 자료형

  • 프로그래밍 = 데이터를 다루는 일

- 대표적 자료형 분류 2가지 

  1. 정수 자료형 : char (문자. 컴퓨터는 내부적으로 문자를 정수로 처리), int (정수)
  2. 실수 자료형 : float (실수)
  • 각 자료형마다 크기가 다르므로 상황에 따라 자료형을 골라 필요한 만큼의 크기를 사용 가능

 

3.2 변수와 상수

  • 변수 (Variable) : 변하는 값
  • 상수 (Constant) : 변하지 않는 값
 int 	angel 	= 1004;
자료형   변수    리터럴 상수 (literal constant). 문자 그대로의 의미를 갖고 값이 변할 수 없음

const int angel = 1004;
한정자		기호적 상수 (Symbolic constant)
  • const는 한정자, 제한자(Qualifier). 변수의 초기화 이후에 이 변수가 변경되지 않는다는 것을 의미
  • 리터럴 상수는 숫자로 표시하는 상수, 기호적 상수는 기호로 표시하는 상수

 

3.3 scanf() 함수의 기본적인 사용법

  • scanf == scan formatted. 입력을 어떻게 받을지 format

* scanf 함수는 Microsoft에서 지정한 잘못 사용하면 위험한 함수 -> 그냥 사용하려고 하면 아래와 같은 오류 발생 

* scanf 사용 경고가 뜨는 이유 : scanf가 받을 수 있는 입력 데이터의 크기가 있는데 사용자가 고의로 또는 실수로 해당 데이터 크기를 초과하는 값을 입력할 경우 초과된 데이터가 다른 메모리를 침범해 프로그램에 오류가 발생 (오버플로우)할 수 있고, 이는 해킹시 사용될 수도 있기 때문에 이를 막기 위해 scanf_s로 일정 크기까지만 입력받는 함수를 사용하라고 권장하는 것. 

 

* Visual Studio Code 에서 gcc 컴파일러 사용시는 그냥 scanf 사용 가능

#define _CRT_SECURE_NO_WARNINGS	 // scanf error 경고 해제하는 방법 1. 특정 소스 파일에만 경고 해제
				 // 이 문장은 반드시 코드의 맨 윗줄에 있어야 함
#pragma warning (disable:4996)	 // scanf error 경고 해제하는 방법 2. 파일 내에서 경고 해제
#include <stdio.h>

int main()
{
	int i = 0;
	
	scanf("%d", &i);		// & : ampersand. 변수의 주소를 scanf함수에 넘겨줌
					// scanf는 변수의 주소값을 받아서 값을 변경함
	printf("Value is %d\n", i);

	return 0;
}
  • 경고 해제하는 방법 3 (Preprocessor 매크로를 사용하여 라이브러리에서 사용 되는 사용 중단 경고의 특정 클래스를 해제) : 프로젝트 우클릭 -> Properties -> C/C++ -> Preprocessor

  • 첫번째 줄에 ;_CRT_SECURE_NO_WARNINGS 입력 혹은 edit 창을 열고 아래와 같이 입력

 

* scnaf 함수가 &를 사용해 변수의 주소값을 받는 이유 : C 문법에선 함수의 출력이 하나밖에 안되고, scanf 함수는 여러개의 입력을 받고 값을 바꿔야 하는데, 함수가 여러개의 출력이 안되므로 call by reference를 통해 변수의 값을 바꿔주는 것  

 

 

 


강의 출처 : https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com