728x90
반응형
배열
-> 많은 자료처리를 위해서는 일관성 있고 효율적인 새로운 변수가 필요하다
- 하나의 변수 이름에 순서에 의한 번호 부여
- 변수명[1], 변수명[2], ...
- 효율적인 자료 처리 가능
배열의 정의
- 동일 자료형을 갖는 자료들의 리스트
- 배열의 각 요소는 하나의 변수로 취급
- 배열은 배열명과 첨자로 구분
배열의 선언 형테
- 1차원 배열
- 2차원 배열
- 3차원 배열
1차원 배열
- 배열의 첨자가 하나만 있는 배열
- 첨자의 개수는 배열 전체 구성요소의 개수를 의미
- 배열의 각 요소는 배열명과 첨자로 구분
-> 0 부터 시작
-> 자료형과 기억클래스를 갖는다 (자료형을 사전에 선언해야함)
1차원 배열 선언
- 형식 : 자료형 배열명 [개수]
- 사용 예 : int a[10]
-> 크기가 10인 정수형 1차원 배열 a를 선언한 것이다
1차원 배열의 기억공간 표현
- 배열명 : 배열영역의 시작 주소
-> int일 경우 각 요소의 자료는 4byte
1차원 배열의 초기화
-> 배열을 선언하면 기억공간을 초기화 해야 함
- 초기화 방법
- 배열 선언 후 초기값 할당
- 배열 선언과 동시에 초기값 할당
- 외부로부터 자료를 입력 받아 초기화
- 배열선언 후 초기값 할당
int array[4]; array[0] = 10; array[1] = 20; array[2] = 30; array[3] = 40;
- 배열 선언과 동시에 초기값 할당
int array[4] = {10, 20, 30, 40}; // 배열 크기 생략 가능 // 마지막 값을 공백으로 두면 0으로 초기화됨 // 중간에 공백 발생시, 초과된 값 입력 시 에러 발생
- 외부로부터 자료를 입력 받아 초기화
int x[10]; for(int i=0; i<10; i++) { scanf("%d", &x[i]); }
1차원 배열의 초기화 후 기억공간의 표현
int array[5] = {10 ,20, 30, 40, 50};
다차원 배열
2차원 배열 선언
- 형식 : 자료형 배열명 [행의 수][열의 수]
- 사용 예 : a[3][4]
-> 정수형 12개의 요소를 가진 2차원 배열 a를 3행 4열로
2차원 배열의 선언과 초기화
int array[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int array[3][3] = [{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
2차원 배열의 기억공간 표현
- 배열명은 배열 전체의 시작 주소
- 각 배열의 [0]번째 열은 각 부분 배열의 시작 주소 (&a[2][0])
3차원 배열 선언
- 형식 : 자료형 배열명[면의 수][행의 수][열의 수]
- 사용 예 : int a [2][3][4]
- 의미 : 정수형 24개 요소를 가진 2면 3행 4열로 이루어진 3차원 배열
char형 배열
- 형식 : char 배열명[문자열 길이 + 1]
- 사용 예 : char str[12]
- 의미 : 12의 길이를 가진 char형 배열
char형 배열 선언과 초기화
char name[] = "HONG GIL DONG"; -> 문자열 단위로 초기화 (자동적으로 널 문자 삽입)
char address[] = " {'S', 'E', 'O', 'U', 'L', '\0'}; -> 문자 단위로 초기화 ( 널 문자를 삽입해야 함)
- 널 문자 '\0' 을 추가하지 않을 경우 마지막에 쓰레기 값이 붙을 수 있다
- scanf()로 입력 받아도 자동으로 널 문자가 삽입된다
배열을 함수의 매개변수로 사용할 경우
- 배열 명만 명시하여 호출한다
- 함수의 헤더에는 가장 높은 차원의 크기를 생략 가능하다 (1차원일 경우도 생략 가능)
-> 함수의 이름은 배열의 위치가 전달 되는 것이기 때문에?
반응형
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 - 10. 배열과 포인터 (3) (0) | 2021.03.17 |
---|---|
C언어 - 9. 배열과 포인터(2) (0) | 2021.03.17 |
C언어 - 7. 함수와 기억클래스(2) (0) | 2021.03.14 |
C언어 - 6. 함수와 기억클래스(1) (0) | 2021.03.14 |
C언어 - 5. 제어문과 반복문 (0) | 2021.03.10 |
댓글