• 변수와 상수
  • Zappy (IP: *.51.113.3)
    조회 수: 5922, 2006-09-05 19:13:24(2006-09-05)
  • int a = 5;            <ㅡ변수

    const int a = 5; <-상수

    두개의 차이는  변수는 언제든지 다른 값을 넣을수 가 있는것이고,

    상수는 한번 선언을 할때 넣은 값은 바꿀수가 없는 것입니다.

    막약 위와 같이 상수 a에 5를 넣었는데 a = 10 <-이런 식으로 쓰면 에러가 나죠..

    그리고  포인터에서도 상수가 있습니다.

    배열 첫번째 방은 상수 지요.. 배열의 시작 번지는 바꾸지 못합니다.

    int a[]   ==  *(a)<-이와 같고 a에는 다른 주소값을 넣을 수가 없습니다.

    외냐하면 (const) *a이기 때문이지요..

    하지만 int *a는 a에 어떤 주소 값이든 넣을수 가있습니다.  상수로 선언을 하지 않았으니깐요.

    그리고.  const int *a와  int const *a도 차이가 있습니다.

    위와 같이 const int *a은 a가 가리치는 곳의 값을 바꿀수가 없습니다.

    int const *a  와 같이 쓰면 a의 주소 값을 바꿀 수가 없습니다.



    변수와 상수는 코드상에서의 표현이기도

    실제로 동작할 때는 메모리에 공간에 올려집니다.

    코드상에서 변수를 만들라고 지정된 코드는,

    해당 데이터 타입의 크기로 메모리 공간을 만들게 됩니다.

    이때 이 메모리는 값을 읽을 수도 있고 쓸 수도 있는 메모리입니다.

    마찬가지로 상수에 대해서도 메모리 공간이 만들어지는데요,

    메모리 공간이 만들어지면서 상수값으로 채워지고,

    그 이후로는 그 메모리는 읽기 전용이 됩니다.



    정확히 알고 계시네요. 조금더 구조적으로 알고 싶다면 코드로 설명해드리겠습니다.

    일반으로 코드를 작설할때 자신도 모르게 상수와 변수 모두 사용하게 됩니다.

    #include <stdio.h>

    void main()
    {
         int a = 10;
         int b;

         b = a - 3;

         printf("%d - %d = %dn", a, 3, b);
    }



    위에 코드에서 무엇이 변수이고 무엇이 상수일까요??

    변수(초록색)는 a, b 이고 상수(빨간색)는 10, 3 입니다.



    왜 10, 3이 상수 일까요?? 10은 10이지 11이 아닙니다. 3역시 3입니다.

    그렇기 때문에 10과 3은 변하지 않는 값입니다... 즉, 상수는 변하지 않는 값이다. 맞죠??

    만일 상수의 값을 10++; 혹은 10 = 3+2; 등과 같이 바꿀려고 한다면, 컴파일시 에러가 발생합니다. !!



    하지만 a와 b는 값이 변해도 됩니다. 변수 a에 10을 넣어도 되고 100을 넣어도 됩니다. 변수 a는 변핤수 있는 값입니다... 즉, 변수는 변하는 값이다.



    상수와 변수를 구분한다면, 상수는 코드에 값이 정해져 있는것은 다 상수라 생각 하시면 됩니다. 변수는 자료형 변수명; 으로 선언된 변수명이 변수이고요. ^^;;

댓글 0

번호 제목 닉네임 조회  등록일 
12 Zappy 6022 2006-10-18
11 Zappy 5792 2006-10-18
10 Zappy 5560 2006-10-18
9 Zappy 5540 2006-10-18
8 Zappy 5042 2006-10-18
7 Zappy 5459 2006-02-28
6 Zappy 5139 2006-10-01
5 Zappy 6948 2006-09-22
Zappy 5922 2006-09-05
3 Zappy 5439 2006-09-05
XE Login