본문 바로가기
정보처리이론

1-4. 배열과 문자열

by 공부합시다홍아 2020. 10. 17.

배열
배열은 동일한 데이터 유형을 여러 개 사용해야 할 경우 이를 손쉽게 처리하기 위해
여러 개의 변수들을 조합해서 하나의 이름으로 정의해 사용하는 것

- 배열은 하나의 이름으로 여러 기억장소를 가리킨디ㅏ. 
  배열에서 개별적인 요소들의 위치는 첨자를 이용하여 지정
- 배열은 변수명 뒤에 대괄호[ ]를 붙이고 그 안에 사용할 개수를 지정
- 배열의 위치는 0부터 시작된다.
- 배열은 행 우선으로 데이터가 기억장소에 할당된다.

1차원 배열
1차원 배열은 변수들을 일직선상의 개념으로 조합한 배열이다. 

배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있습니다.

하지만 현실적으로 이해하기가 쉬운 2차원 배열까지가 많이 사용됩니다.

자료형 변수명[개수];

◎ numArr[0] 은 첫 번째이다. numArr이라는 배열명 뒤에  [ ]안에 숫자는 배열의 위치를 나타낸다.

C언어

1차원 배열 a의 각 요소에서 10,11,12,13,14를 저장 후 출력

#include<stdio.h>
main()
{
    int a[5];
    int i;
    for(i=0; i<5; i++)
        a[i] = i+10;
    
    for(i=0; i<5; i++)
        printf("%d", a[i]);
}

JAVA

public class Example{
	public static void main(String[] args){
        int a[] = new int[5];
        int i;
            for(i=0; i<5; i++)
                a[i] = i+10;
            for(i=0; i<5; i++)
                System.out..printf("%d", a[i]);
     }
}

 

2차원 배열
변수들을 평면, 즉 행과 열로 조합한 배열이다. 

2차원 배열은 [ ] (대괄호)를 두 번 사용하여 선언하며 첫 번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정합니다. 일반적으로 2차원 공간은 가로x세로로 표기하지만 배열로 만들 때는 세로x가로로 표기한다.

자료형 변수명(배열이름)[세로크기][가로크기];
자료형 변수명(배열이름)[세로크기][가로크기] = { { 값, 값, 값 }, {값, 값, 값} };

자료형 변수명[행개수][열개수]

#include<stdio.h>
main()
{
    int a[3][4];
    int i,j,k = 0;
    for(i=0; i<3; i++){			//행
        for(j=0; j<4; j++){ 		//열
            k++;
            a[i][j] = k;
        }
    }
}

결과값

1 2 3 4
5 6 7 8
9 10 11 12

 

배열의 초기화
배열 선언 시 초기값을 지정할 수 있다.
배열을 선언할 때 배열의 크기를 생략하는 경우에는 반드시 초기값을 지정해야 
초기값을 지정한 개수 만큼의 배열이 선언된다.

#include<stdio.h>
main()
{
    int a[2][4] = {
    	{10,20,30,40},
        {50,60,70,80}
    };
    
    printf(%d", a[0][0]);
    prinf(%d\n", a[1][1]);
}

 

배열 형태의 문자열 변수

큰 따옴표(" ")로 묶인 글자는 글자 수에 관계없이 문자열로 처리된다.
문자열을 저장하는 자료형이 없기 때문에 배열, 또는 포인터를 이용하여 처리한다.

char 배열이름[크기] = "문자열"

- 배열의 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자가 문자열 끝에 자동으로 삽입
- 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정해야 하며, 이미 선언된 배열에는 문자열 저장 X
- 문자열 끝에 자동으로 널 문자가 삽입되므로, 널 문자까지 고려하여 배열 크기를 지정

C언어

#include<stdio.h>
main()
{
    char a='A';
    char b[9] = "ABCDEFGHI"
    char *c = "ABCDEFGHI"
    
    printf("$c\n", a);
    printf("%s\n", c);
    printf("%s\n", c);
}

결과 값

a = A, c = ABCDEFGHI, c= ABCDEFGHI

JAVA

public class Example{
    public static void main(String[] args){
        String str = "Information!";
        int n = str.length();
        char[]st = new char[n];
        n--;
        for(int k = n; k >= 0; k--){
             st[n-k] = str.charAt(k);
        }
        for(char k : st){
             System.out.printf("%c", k);
        }
    }
}

 

728x90