지난 글에서 문자열을 저장하는 배열에 대해서
살펴보았는데요.
잘 기억나지 않으시다면..
아래 글을 참고해주세요.
이번에는 숫자들을 저장하는 것에 대해서
살펴보도록 하겠습니다.
문자 하나를 저장하는 것은 변수,
문자들을 저장하는 것은 배열이었는데요.
역시 마찬가지로,
숫자 하나를 저장하는 것은 변수,
숫자들을 저장하는 것은 배열로 처리가 가능합니다.
사용하는 방법도 거의 비슷해요.
정수 하나를 저장할 변수 a를 만드려면,
int a; 라고 했었는데요.
정수 10개를 저장할 배열 b를 만드려면,
int b[10]; 이라고 해주면 된답니다.
몇 개를 저장할지를 적어주면 된다는 사실만
기억하시면 될 것 같아요.
그러면 배열 b의 첫 번째 공간에 1을 저장하려면,
어떻게 할까요?
b[1] = 1;
이렇게 하면 될까요?
아니랍니다.
b[0] = 1;
이렇게 하셔야 합니다.
컴퓨터는 늘 0번째부터 있다고 생각하셔야 합니다.
그러면 배열 b의 10번째 값에 10을 저장하려면?
b[9] = 10;
이렇게 하시면 됩니다.
그런데, 배열을 만들면서 동시에 값을 저장할수도 있어요.
이렇게요.
int b[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
이렇게 하시면
b[0]에는 1이,
b[1]에는 2가,
...
b[9]에는 10이 잘 저장된답니다.
그러면 아래 코드의 결과가
어떻게 될 지 한 번 예상해볼까요?
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> int main() { int a[5] = {1, 2, 3, 4}; printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]); return 0; } |
잘 보시면, 처음에 배열 a를 만들 때,
공간은 5개를 만들면서 값은 4개만 저장했는데요.
이렇게 만들면서 값을 저장하는 경우에는
차례대로 값을 저장하고,
남은 공간이 있다면 자동으로 0이 저장됩니다.
따라서
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 0;
이렇게 된 셈이죠.
따라서 출력 결과는 바로,
1 2 3 4 0
이렇게 되겠네요.
다음 예제를 하나 더 보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main() { int a[5]; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]); return 0; } |
이 경우에도 위와 같은 결과가 나올까요?
그렇지 않습니다.
5번째 줄에서 배열 a를 만드는데요.
5개의 공간을 만들어줍니다.
그런데, 5개의 공간에는 어떤 값이 들어가있을지 몰라요.
0이 들어가 있을지도, 1이나 -1이 들어가 있을 수도 있구요.
엄청 크거나 작은 값이 들어가 있을 수도 있답니다.
제가 얻은 결과는 바로
1 2 3 4 -1828595088
이렇게 마지막 값은 뭐가 나올지 알 수 없답니다.
그런데,
Dev C++에서는 무슨 값이 나올지 모르는 저 상황에서
대부분 0이 저장된답니다.
유독 Dev-C++에서만 그런 것 같아요!
우리가 작성하는 C언어가
Dev C++에서만 돌아가면 참 슬프겠죠.
어떤 컴파일러에서도 돌아갈 수 있도록 만드려면
위에 내용을 잘 이해하셔야 할 것 같아요.
아 그리고, 만약에 정수가 아니라,
실수 10개를 저장하는 배열 c를 만드려면,
double c[10]; 이렇게 해주면 된답니다.
간단하죠?
'C언어 학습 공간 > 변수와 배열' 카테고리의 다른 글
[C3-4] 문자열을 저장하는 배열 (0) | 2018.11.09 |
---|---|
[C3-3] 문자를 저장하는 변수 - char (0) | 2018.11.07 |
[C3-2] 실수형 변수 - double (0) | 2018.11.04 |
[C3-1] 정수형 변수 - int (0) | 2018.11.01 |