c언어 프로그래밍 기초 문법
배열
배열은 ‘같은 타입’의 여러 공간을 하나의 변수로 ‘다루는 것’이며 만들어지는 공간은 ‘연속’된다. 배열을 선언(생성) 하기 위해서는 [ ](대괄호)를 사용한다. 대괄호 안에 배열의 크기를 정하는 정수 값을 넣는다. 그리고 배열에는 ‘인덱스(index)’를 이용해 각 요소에 접근하고 사용할 수 있다. 여기서 인덱스는 간단하게 위치 또는 순서로 의미를 이해하면 된다. 참고로 모든 프로그래밍 언어에서 인덱스는 1이 아닌 0부터 시작한다. 따라서 마지막 순서의 인덱스는 길이에서 1을 뺀 값이 된다. 아래에 배열을 생성하는 여러 가지 형태들을 보여준다.
// 배열생성
int iArr1[5]; // 배열생성, 각 공간(5개의정수)은 초기화 되지 않음 (쓰레기값)
int iArr2[5] = { 1, 2, 3, 4, 5 }; // 배열생성과 동시에 초기화(순서대로)
int iArr3[5] = { 1, 2 }; // 뒤에 나머지 공간3개는 자동으로 0이 대입
int iArr4[5] = { 0, }; // 모든 공간을0대입
int iArr5[] = { 10, 20, 30, 40, 50 }; // 자동으로 길이가5가된다.
1. 문자열 배열
여기서 char는 1개 문자를 표현하는 자료형이다. char의 배열 형태는 ‘문자열’을 표현할 수 있다. 그리고 문자열의 끝에는 자동으로 ‘널 문자(\0)’가 삽입되어 있다는 것을 주의해야 한다. 널 문자는 정수 0을 의미하며 공백과는 다른 문자이다.(참고로 공백은 정수 32) 따라서 널 문자 때문에 배열 선언 시 원하는 문자열 길이보다 최소 1이상 여유 있게 선언해야 한다. 아래에 문자열 배열을 생성하는 여러 가지 형태들을 보여준다.
char szStr1[20] = "Hello"; // char 배열 선언과 동시에 초기화 할 때'문자열'사용가능
char szStr2[20] = { 'H', 'e', 'l', 'l', 'o', }; // szStr1과동일
char szStr3[20] = { 0, }; // 정수0은 널 문자
char szStr4[20]; // 초기화 하지 않은 문자 배열
char szStr[] = "Hello World"; // 길이가 자동으로 잡힌다.(11글자)
2. 다차원 배열
다차원 배열은 2차원, 3차원 혹은 그 이상의 배열 형태를 말한다.
예를 들어 int iArr[2][3] = {0, }은 2행 3열의 행렬 형태를 나타낸다. 아래에는 2차원 배열 생성 형태를 나타낸다.
// 2차원 배열 생성 시 초기값 넣기
int iArr[2][3] = { {1, 2, 3}, {4, 5, 6} };
int iArr[2][3] = { {1, 2, 3},
{4, 5, 6} };
예제
#include <stdio.h>
void main()
{
// 2차원 문자배열로 동물이름 입력 받기
char szArrAnimal[3][20] = { 0, }; // 20글자 문자열이 3개
int i = 0;
int iArrLen = 0;
// 20칸 * 3개 = 60byte / 1개 행의 크기 (20byte) --> 3 (행의개수)
iArrLen = sizeof(szArrAnimal) / sizeof(szArrAnimal[0]);
// 1차원 : iArr[1] ---> 2번째 요소
// 2차원 : iArr[1][1] --> 1행, 1열 요소 1개
// iArr[1] --> 1행 전체 의미
printf("동물 이름 입력\n");
for (i = 0; i < iArrLen; i++)
{
printf("%d번 동물 : ", (i + 1));
gets(szArrAnimal[i]); // 한 행 전체를 의미 = 1차원 문자배열과 같다.
}
for (i = 0; i < iArrLen; i++)
{
printf("%d번 동물은 %s입니다.\n", (i + 1), szArrAnimal[i]);
}
}
반응형
'C언어' 카테고리의 다른 글
C언어 기초 프로그래밍 문법 - 포인터(Pointer) (0) | 2020.04.02 |
---|---|
C언어 프로그래밍 기초 문법 - 함수(Function) (0) | 2020.03.17 |
C언어 프로그래밍 기초 문법 - 반복문(Repetitive) (0) | 2020.03.14 |
C언어 프로그래밍 기초 문법 - 조건문(Conditional) (0) | 2020.03.08 |
C언어 프로그래밍 기초 문법 - 연산자(Operator) (0) | 2020.02.28 |