배열을 사용하는 이유
- 3개의 숫자가 있을 때 가정 큰 숫자를 구하는 프로그램을 작성
- 기본적으로 변수의 이름을 a, b, c로 설정하면 된다는 것을 예상할 수 있음
- 비효율적이긴 하지만 변수 100개를 만들어서 선언할 수는 있음
- 하지만 숫자가 10000000개라면 이 때는 일일이 변수를 만들어서 처리할 수 없음
- 동일한 자료형을 여러 개 담는 기술이 바로 배열
- 배열을 사용하면 동일한 성격의 데이터를 다수 표현할 수 있음
인덱스 0 1 2 3 4 5 6 7 8 9
데이터 6 5 4 3 9 8 0 1 2 7
배열의 선언과 초기화
자료형 배열명[배열의 크기] = {초기화 값};
초기화 값은 없을 수도 있음
* 배열에선 기본적으로 특정한 데이터에 접근하고자 할 때 중괄호를 넣어주고 중괄호 안에는 인덱스가 들어감
이 인덱스에 해당하는 원소에 접근하겠다는 뜻
만약에 차례대로 a배열에 0 1 2가 들어가 있을 때 a배열에 인덱스 2는 값이 2가 됨
* 배열을 만들고 배열을 초기화 한 이후에 각각의 원소에 접근하는 방법
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
int main(void) {
int a[10] = { 6, 5, 4, 3, 9, 8, 0, 1, 2, 7 };
int i;
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
system("pause");
return 0;
}
- 전체 원소가 초기화되게 하고 싶으면 {0, }를 하면 됨
* 배열의 원소 중에서 최댓값 찾기
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
#include<limits.h> // 다양한 자료형들의 최솟값이나 최댓값 즉 그 한 개에 해당하는 값들을 포함 하고 있음
int main(void) {
int a[10] = { 6, 5, 4, 3, 9, 8, 0, 1, 2, 7 };
int i, maxValue = INT_MIN; // INT_MIN은 상수
for (i = 0; i < 10; i++) {
if (maxValue < a[i]) maxValue = a[i];
}
printf("%d ", maxValue);
system("pause");
return 0;
}
INT_MIN
- INT_MIN은 최댓값을 구하기 위해 자주 사용되는 기능
- <limits.h> 헤더 파일에 정의가 되어 있는 것으로 int형 범위의 최솟값을 반환함(약 -20억)
- INT_MAX 또한 사용할 수 있음
문자열과 배열
1.
- 원시적인 C언어는 기본적으로 자체적인 문자열 자료형을 제공하지 않음
- 따라서 C언어에서는 문자(character)를 여러 개 묶어 놓는 형태로 문자열을 표현함
- C++에서는 이러한 불편함을 알고 있기 때문에 자체적으로 string 자료형을 제공함
2.
- C언어에서는 하나의 문자는 1바이트만을 담으므로 다음과 같이 문자의 배열을 사용
- 다시 말해 문자열은 사실 배열이라고 할 수 있음
char a[20] = "Hello World"
3.
- 기본적으로 문자열을 선언할 때는 문자열의 크기보다 배열의 크기가 크도록 해야 함
- 문자열을 입력받을 때 및 출력할 때는 %s라는 형식 지정자를 사용함
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
int main(void) {
char a[20];
scanf("%s", &a);
printf("%s\n", a);
system("pause");
return 0;
}
4.
- C언어는 특정한 인덱스의 문자에 바로 접근할 수 있다는 장점이 있음
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
int main(void) {
char a[20] = "Hello World";
a[4] = ',';
printf("%s\n", a);
system("pause");
return 0;
}
* 문자열에 포함된 l의 개수 출력하기
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
int main(void) {
char a[] = "Hello World";
int count = 0;
for (int i = 0; i <= 10; i++) {
if (a[i] == 'l') count++;
}
printf("%d\n", count);
system("pause");
return 0;
}
- 배열을 이용하면 많은 양의 데이터를 쉽게 처리할 수 있음
- C언어에서의 문자열은 내부적으로 문자의 배열임