변수의 사전적 의미
①주어진 값들의 집합 중 임의의 것으로 가정할 수 있는 양(ISO).
②프로그램 작성에서 값을 나타내는 문자나 문자들의 집합. 컴퓨터 프로그램의 실행 중에는 주소에 대응한다(ANSI).
③어떤 값을 갖는 기호 표시(이름). 이 값은 프로그램을 실행할 때마다, 또는 프로그램 내의 단계에 따라 변할 수 있다. 예를 들어, 다음 문장에서 I와 K는 변수이다.
K=3+I
F(x) = 2x + 1
2, 1은 상수(고정된 값)
x 는 변수(변하는 값)
변수(Variable)란 무엇인가?
데이터를 저장할 수 있는 메모리 공간에 붙여진 이름
메모리에 데이터를 저장하기 위해서는 주소값을 이용해야하나 너무나 불편하므로 편리하게 데이터를 저장할 수 있게 변수를 사용할 수 있다.
변수의 선언
[Data Type] [Variable Name];
예)
int a; // 메모리 공간에 4바이트 만큼 공간을 할당하고 정수형태로 저장한다.
float b; // 메모리 공간에 4바이트 만큼 공간을 할당하고 실수형태로 저장한다.
변수의 주소
변수이름 앞에 &(ampersand)를 붙이면 그 변수의 메모리 주소값을 나타낸다.
예)
int a = 1;
&a // 변수 a 의 주소값이다.
1001 |
1002 |
1003 | &a 1004 |
1005 |
1006 |
1007 |
1008 |
1009 |
1010 | |
|
|
|
| 0000 | 0000 | 0000 | 0001 |
|
|
|
|
|
|
| a |
|
|
|
예)
#include <stdio.h>
void main()
{
bool a;
char b;
short c;
int d;
float e;
double f;
__int64 g;
printf("bool:%d a:%d\n", sizeof(bool), sizeof(a));
printf("char:%d b:%d\n", sizeof(char), sizeof(b));
printf("short:%d c:%d\n", sizeof(short), sizeof(c));
printf("int:%d d:%d\n", sizeof(int), sizeof(d));
printf("float:%d e:%d\n", sizeof(float), sizeof(e));
printf("double:%d f:%d\n", sizeof(double), sizeof(f));
printf("__int64:%d g:%d\n", sizeof(__int64), sizeof(g));
}
결과값
bool:1 a:1
char:1 b:1
short:2 c:2
int:4 d:4
float:4 e:4
double:8 f:8
__int64:8 g:8
참조만 하세요!
#include <stdio.h>
#include <stdlib.h>
void main()
{
bool a = true;
char b = 'a';
short c = 1;
int d = 123456789;
float e = 3.14;
double f= 3.141592654;
__int64 g = 1234567890000;
printf("bool:%d a'size:%d &a:%p a:%d\n", sizeof(bool), sizeof(a), &a, a);
printf("char:%d b'size:%d &b:%p b:%d\n", sizeof(char), sizeof(b), &b, b);
printf("short:%d c'size:%d &c:%p c:%d\n", sizeof(short), sizeof(c), &c, c);
printf("int:%d d'size:%d &d:%p d:%d\n", sizeof(int), sizeof(d), &d, d);
printf("float:%d e'size:%d &e:%p e:%f\n", sizeof(float), sizeof(e), &e, e);
printf("double:%d f'size:%d &d:%p f:%f\n", sizeof(double), sizeof(f), &f, f);
char digit64[100];
_i64toa(g, digit64, 10);
printf("__int64:%d g'size:%d &g:%p g:%s\n", sizeof(__int64), sizeof(g), &g, digit64);
}
결과값
bool:1 a'size:1 &a:0012FED7 a:1
char:1 b'size:1 &b:0012FECB b:97
short:2 c'size:2 &c:0012FEBC c:1
int:4 d'size:4 &d:0012FEB0 d:123456789
float:4 e'size:4 &e:0012FEA4 e:3.140000
double:8 f'size:8 &d:0012FE94 f:3.141593
__int64:8 g'size:8 &g:0012FE84 g:1234567890000