본문 바로가기
공부정리 및 기록/[C언어] 프로그래밍

[C언어] 변수 개념과 특징 / 변수선언 이해하기

by 9월스튜디오 2020. 7. 22.

 


 변수와 변수 선언 

 

우선 변수란 무엇인가.

 

《변수(variable)》란, 값을 저장해놓는 기억공간이다. 

변수에 저장한 데이터의 값은 언제든지 변경될 수 있다.

변수마다 정해진 자료형이 있고, 각 할당된 값을 갖고 있다.

모든 변수에는 정해진 이름이 있고, 변수명을 정의할 때는 지켜야할 규칙이 있다.

  • 모든 변수는 사용되기 전에 선언한다
  • 영문자 또는 언더바(_)로 시작해야한다.
  • 중간에 숫자와 언더바(_)를 섞을 수 있다. (이외 특수문자 사용불가)
  • 대소문자를 구별하여야 한다.
  • 예약어(ex: void, int, char…)로는 사용이 불가하다.

 

 

 《변수 선언》 은 말 그대로 변수라는 기억 공간에 이름을 정의하는 것이다.

변수 선언을 하면 컴파일러는 자료형의 크기만큼 메모리 공간을 확보하여 이에 변수 이름을 지정한다.

 

이러한 변수 선언을 위해서 C언어에서는 자료형이라는 것이 필요한데,

자료형은 말 그대로 자료의 형태를 의미한다.

프로그램 내에서의 변수 사용은 데이터를 어떤 형태로 저장할 것인지 '자료형'을 미리 지정하는 것이다.

 

저장되는 데이터 크기에 따라 필요한 메모리 공간의 크기도 달라진다.

이에 효율적 메모리 사용을 위하여 여러 종류의 자료형이 존재한다.

 

 

자료형은 우선 기본형과 확장형으로 나누어진다.

 

[ 기본형 ]

  • 정수형(integer type)

 

  • 실수형 (flating-point type) (IEE 부동 소수점형)

 

  • 문자형 (character type) : char는 8bit의 ASCII 코드를 사용한다. 영어 대문자는 십진수 60~95, 소문자는 십진수 97~122, 숫자는 48~57로 메모리에 저장됨. 

 

  • 열거형 (enumerated type) : 변수가 가질 수 있는 값의 범위가 정해져 있을 때 값을 나열. 비교적 제한적이지만 단어 사용에 가독성을 높임.

- 숫자 대신 단어 사용

- 형식 : enum 태그명 {열거자1, 열거자2...}

 

 

  • 형 없음

*10진수 이이외의 8진수나 16진수를 지정하는 방법도 있다.

8진수는 숫자 앞에 0을 붙이고, 16진수는 숫자 앞 0x를 붙인다.

예 : int num1 = 015;

       int num2 = 0x6;

 

 

 

[ 확장형 ]

  • 배열형 (array type)
  • 함수형 (function type)
  • 포인터형 (pointer type)
  • 구조체형 (structure type)

 

변수선언의 형식은 다음과 같이 사용된다.

자료형 변수명;

ex : int 변수명;

     char 변수명;

     float 변수명;

 

 

변수 선언시엔 이 세가지 사항을 고려해야 한다.

 

변수에 저장될 값의 크기 : 변수의 범위보다 오버플로(overflow) 혹은 언더플로(underflow)가

발생하지 않도록 최솟값과 최댓값의 범위를 고려해야함.

 

변수의 선언위치 : 변수를 함수 외부에 선언하면 전역 변수가 되고,

함수 내부에 선언하면 지역변수로 선언되어 특정 지역 내에서만 사용된다. 지역변수와 전역변수의 기억공간은 다르다.

전역변수는 자료 영역에, 지역변수는 임시 공간인 스택 영역에 저장된다.

 

#include <stdio.h> //선행처리기
int a = 100;  // 전역변수 a
void func()
{
 int a = 200;
 printf ("func()에서 a의 값 => %d \n", a);  //func()의 지역변수 a 출력
 }

 

변수의 초기화 : 선언된 변수에 특정한 값을 부여하는 것이다.

초기화를 하지 않는다면 기존의 값인 쓰레기값이 남아서 에러가 발생할 수 있다.

 

 

 

 

 

댓글