05. 변수

SeongMin Kim·2021년 5월 13일
0

C 프로그래밍

목록 보기
5/5

변수란?

데이터를 저장하는 임시 공간, 메모리 공간

변수를 선언하는 법은 아래와 같다.

#include<stdio.h>
int main(void) {
    int a; // 메모리 공간 a가 만들어진다. 정수만 저장 (정수형 변수)
    int b; // 메모리 공간 b가 만들어진다. 정수만 저장 (정수형 변수)
    
    return 0;
}

변수의 종류

  • 정수형 변수 : char형, short형, int형, long형이 있으며 차이점은 추후에 배운다. int를 자주 쓴다. (char는 문자를 저장하지만, 정수형이다. 이유는 추후에 설명)

  • 실수형 변수 : float형, double형, long double형이 있으며 double형을 제일 많이 쓴다.

#include<stdio.h>
int main(void)
{
    int a;		//정수형 변수 선언
    float b;	//실수형 변수 선언

    return 0;
}

참고로 아래 코드와 같이 동시에 두 변수를 선언하는 것도 가능하다.

#include<stdio.h>
int main(void)
{
    int a, b;		//정수형 변수 선언
    float c, d;	//실수형 변수 선언

    return 0;
}

변수는 스택 구조(먼저 저장된 값이 나중에 나오는 형식)으로 저장된다. 선언 순서는 a-b-c-d이고, 스택에 a-b-c-d 순으로 들어간다. 따라서 맨 위에 있는 변수는 d이다.

데이터란?

변수에 저장되는 값이다.

#include<stdio.h>
int main(void)
{
    int a;
    int b;

    printf("%d \n", a);
    printf("%d \n", b);

    return 0;
}

위와 같이 변수를 선언만 하고 아무 값도 저장하지 않고 출력하면 에러가 발생한다. (visual studio 2019 기준)

#include<stdio.h>
int main(void)
{
    int a = 0;
    int b = 1; // =은 대입연산자.

    printf("a의 값은 %d 입니다. \n", a);
    printf("b의 값은 %d 입니다. \n", b);

    return 0;
}

위와 같이 변수를 저장하고 출력하면 잘 출력된다.

변수는 임시공간

변수에 저장된 데이터는 변경될 수 있다.

#include<stdio.h>
int main(void)
{
    int a = 0;
    int b = 1;

    printf("a의 값은 %d 입니다. \n", a);
    printf("b의 값은 %d 입니다. \n", b);

    a = a + 10;
    b = b + 10;

    printf("변경된 a의 값은 %d 입니다. \n", a);
    printf("변경된 b의 값은 %d 입니다. \n", b);

    return 0;
}

변수는 초기화 해놓는 것이 좋다. 당장 안할거면 0으로 해놓는 습관을 들이자.

변수 선언 시 주의할 점

  1. 변수 선언은 제일 앞쪽에 한다. 중간에 하면 오류가 발생할 가능성이 있다. (visual studio 2019 기준으로는 발생하지 않는다.)
#include<stdio.h>
int main(void)
{
    int a; //정상
    int b; //정상

    a = 1;
    b = 2;

    int c; //오류

    c = 3;

    printf("a : %d \n", a);
    printf("b : %d \n", b);
    printf("c : %d \n", c);

    return 0;
}
  1. 변수의 이름은 의미있게 짓는다. 보자마자 어떤 의미를 가진 변수인지 유추가능해야 효율적이다.
#include<stdio.h>
int main(void)
{
    int appleBox = 30;
    int grapeBox = 20;
    int total;

    total = appleBox + grapeBox;

    printf("총 %d 박스가 있습니다. \n", total);

    return 0;
}
  1. 숫자가 먼저오면 안된다.
  2. 특수문자와 공백의 사용이 불가능하다.
  3. C언어에서 미리 정의된 키워드는 사용할 수 없다. (visual studio에서 미리 정의된 키워드는 다른 색으로 나타낸다.)
  4. 대소문자를 구분한다. 대문자와 소문자는 다른 변수로 인식한다.

변수의 시작 주소

변수 앞에 &를 붙이면 변수의 시작 주소를 알 수 있다. &는 주소 연산자라고 부른다.

#include<stdio.h>
int main(void)
{
    int a = 3;
    int b = 4;

    printf("a : %d \n", a);
    printf("b : %d \n", b);

    printf("a의 시작 주소 : %x \n", &a);
    printf("b의 시작 주소 : %x \n", &b);

    return 0;
}

여기서는 16진수로 주소를 출력했지만 10진수나 8진수로 출력할 수도 있다. 하지만 16진수로 출력하는 습관을 들이는 것이 좋다.

또한, 먼저 저장된 변수의 주소의 값이 더 크다. 가장 먼저 입력한 값이 메모리에 가장 먼저 들어가고, 주소의 값도 가장 크다. 따라서 최근에 저장한 변수의 주소 값이 가장 작다.

profile
갈팡질팡

0개의 댓글

관련 채용 정보