반응형

c언어에서 2차원 배열은

int a[10][10];

위와 같은 형식으로 선언이 됩니다.

 

일차원 배열과 마찬가지로 선언과 동시에 초기화 할 수 있습니다

int a[3][3]={{1, 1, 1},{2, 2, 2},{3, 3, 3}};

 

이차원 배열의 내용을 출력하려면 이중 반복문이 필요합니다.

#include <stdio.h>

int main ()

{

    int i, j;

    int a[3][3]={{1, 11, 21},{2, 22, 23},{3, 34, 36}}; //선언

    

    for(i=0;i<3;i++){

        for(j=0;j<3;j++)

            printf("%d ",a[i][j]);

        printf("\n");

    }

}

 

 

위 소스는 3*3정사각행렬로 나왔습니다.

a[][] : 두 개의 [](대괄호)가 행과 열을 나타낼 수 있습니다.

이 번에는a[2][3]으로 작성을 해보죠.

#include <stdio.h>

 

int main ()

{

    int i, j;

    int a[2][3]={{1, 11, 21},{2, 22, 23}}; //선언

    

    for(i=0;i<2;i++){

        for(j=0;j<3;j++)

            printf("%d ",a[i][j]);

        printf("\n");

    }

}

이번에는 2행 3열 짜리 행렬로 나오네요

소스를 보시면 for문의 i값도 i<2로 수정 되었습니다.

바깥쪽 반복문이 행을, 안쪽 반복문이 열을 나타내기 때문이지요.

 

c언어에는 문자열을 다루는 변수형이 없습니다.

반드시 배열에 담아서 처리를 해야 하지요.

홍길동

유관순

이순신

이렇게 문자열들을 여러개 입력 받으려면 이차원 배열을 사용해야 합니다.

#include <stdio.h>

 

int main ()

{

    int i;

    char name[3][10];

 

    for(i=0;i<3;i++){//입력

        scanf("%s", name[i]);

    }

      

 

    printf("----------여기서 부터 출력-----------\n");

    for(i=0;i<3;i++){//출력

        printf("%s\n", name[i]);

    }

}

문자열 입력에서는 이중 반복문이 아니지요?

하지만 분명 선언은 이차원 배열로 선언 했습니다.

비록 문자열을 다루는 변수형은 없지만 문자열을 다루는 형식지정자 %s가 있기 때문입니다.

덕분에 문자열을 좀더 쉽게 다룰 수 있지요.

간혹 3명을 이름 3글자씩 준다고

char name[3][3]; 이렇게 선언하시는 분들이 계신데요.

한글은 한글자에 2byte씩입니다. 그리고 문자열의 맨 뒤에는 우리 눈에는 보이지 않지만 '\0'가 들어가 있습니다. 널 문자라고도 하는데, 문자열의 끝을 나타내 줍니다.

그렇기 때문에 최소 7이상은 선언해 주시는게 좋습니다.


형식지정자

[Computer/Programing] - c언어 형식지정자


반응형

'Computer > Programing' 카테고리의 다른 글

c언어 문자열(1)  (0) 2013.12.25
c언어 포인터를 이용한 스왑함수 구현  (2) 2013.12.14
c언어 삽입정렬  (0) 2013.12.13

+ Recent posts