C언어 메모리 주소의 또 다른 이름 변수
반응형

C언어 변수란?

변수(Variable)는 값을 저장해두는 저장공간입니다. 변수명은 여기에 이름을 붙혀 프로그래머가 사용하기 쉽게 해줍니다.

예를 들면 PC의 폴더와 같습니다. 

폴더를 만들어 비슷한 종류의 동영상이나 파일들을 한곳에 보관합니다. 그리고 폴더명을 알기 쉽게 지어줍니다. 내부적으론 메모리나 하드 드라이브 어딘가에 저장을 시켜두고 필요할 때 마다 불러서 사용합니다. 이때 우리는 폴더나 파일에 이름을 정합니다.

우리는 폴더나 파일의 이름만 알면 그만입니다. 내부적으로 어디에 폴더나 파일이 저장되어 있는지 알 필요가 없습니다.

내부적으론 변수가 선언될 때 값의 데이터타입 크기만큼 메모리상에 공간이 할당됩니다. 값은 그 공간에 저장되고 값이 필요할때 이름으로 저장된 메모리 주소에 접근하여 값을 불러옵니다.

즉, 변수는 메모리 주소라고 할 수 있고 또는 메모리 주소의 이름이라고도 할 수 있습니다.

상수(Constant)와 달리 변수에 다른 값들을 여러번 저장할 수 있습니다.  예를 들어 int a; 라고 선언한 후 a = 1; 혹은 a = 10 등으로 필요에 따라 값을 넣어 사용할 수 있습니다.

변수 데이터 타입

모든 변수는 저장될 값(value)의 타입에 맞춰 데이터 타입을 정합니다.

  • char: 캐릭터(character)값을 저장
  • int: 정수(integer) 값을 저장
  • float: 실수(float) 값을 저장
  • double: 실수(double) 값을 저장
  • void

float와 double의 차이점은 실수값을 저장하지만 저장할 수 있는 크기가 다릅니다. float 단정밀도(32bit), double 배정밀도(64bit)라고 합니다. void는 no value 값이 없다는 의미입니다.

변수 이름 규칙

변수명은 사용하기 편하게 의미있는 이름으로 정합니다. 하지만 다음과 같은 규칙이 있습니다.

  • 숫자로 시작할 수 없다.
  • 알파벳, 숫자 그리고 언더스코어로 조합할 수 있다.
  • 공백을 허용하지 않는다.
  • 키워드는 변수 이름으로 사용할 수 없다.
  • 대소문자를 구분한다. 통상 변수 이름은 소문자로 작성한다.

변수 선언, 정의 그리고 초기화

일반적으로 변수 선언과 정의는 동시에 일어납니다. 변수 선언은 프로그램에서 사용될 변수들을 미리 선언하여 컴파일러에게 알려주는 역활을 합니다. 또한 사용될 값에 따라 데이터타입을 정합니다. (extern 키워드를 사용하여 main() 함수 외부에서 변수를 선언만 합니다.)

선언은 메모리에 공간이 할당되기 전 입니다.  변수 정의는 저장될 값의 크기에 따라 저장 공간을 할당합니다.

int a; 
float b, c;

main() 함수 내에서 사용되는 변수들은 위와 같이 변수의 선언과 정의가 동시에 발생합니다.

변수 초기화는 선언과 정의뿐만 아니라 초깃값을 정해주는 것을 의미합니다.

int a = 10;

다음은 변수의 선언, 정의 그리고 초기화를 설명한 간단한 프로그램입니다.

#include <stdio.h>
 
// 전역 변수 선언
extern int a, b;
extern int c;
 
int main () {
 
    /* 지역 변수 선언, 정의 */
    int a, b;
 
    /* 변수 초기화 */
    a = 7;
    b = 14;
 
    /* + 연산자 사용 */
    c = a + b;
 
    /* 결과값  */
    printf("합계 : %d \n", c);
    
    return 0;
}

OUTPUT
합계: 21

변수(Variable)와 식별자(Identifier)의 차이

식별자는 변수, 함수, 구조체, 포인터 등에 붙여진 이름입니다. 반면, 변수는 값(value)을 저장하는 메모리 주소(저장 공간)의 이름입니다.

정리하면 식별자는 C에서 사용되는 여러 구조에 붙여진 구분하기 위한 이름입니다. 하지만 변수는 프로그램 내에서 값을 저장하기 위해 선언, 정의 그리고 초기화할 수 있는 것들을 말합니다.

<< 다음 혼자 공부하는 C언어 이전 >>
반응형

'프로그래밍 > C' 카테고리의 다른 글

C언어 기본 입출력 방법  (0) 2019.09.13
C언어 개발된 이유 (feat. B언어 문제점)  (0) 2019.09.13
C언어 데이터 타입 (Data Types)  (0) 2019.09.11
C언어 연산자 정리  (0) 2019.09.06
C언어 키워드, 식별자 차이  (0) 2019.09.06