배열

C언어 2020. 12. 4. 14:25

배열을 사용하는 이유

- 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언어에서의 문자열은 내부적으로 문자의 배열임

'C언어' 카테고리의 다른 글

문자  (0) 2020.12.04
포인터  (0) 2020.12.04
함수  (0) 2020.12.04
반복문  (0) 2020.12.04
조건문  (0) 2020.12.03
Posted by khon98
,