반응형
안녕하세요. 훈츠 입니다. 이번 시간에는 1차원 , 2차원, 3차원(다차원) 배열에 대해 정리해 보도록 하겠습니다.
배열 (Array)
- 데이터형과 변수명이 같은 변수의 집합
- 배열 형식과 선언
- 데이터형 배열명[ 열의 갯수 ] ;
- 두가지 초기화 방법
- 선언과 동시 초기화
- 인덱스를 이용한 초기화
- memset 표준 함수를 이용한 초기화 : 0 , -1로 만 초기화 가능
//1. 선언과 초기화 동시지정
//배열의 갯수를 지정
int array[3] = {1,2,3} //값을 초기화
int array[3] = {0,} //이후의 값은 모두 0으로 초기화
//배열의 갯수를 컴파일러가 판단하도록 지정하지 않는법
int array[] = {1,2,3} //값을 초기화
int array[] = {0,} //이후의 값은 모두 0으로 초기화
//2. 인덱싱을 이용한 초기화
array[0] = 1;
array[1] = 2;
array[2] = 3;
//3. 표준함수를 이용한 초기화
#include <memory.h>
#include <string.h>
memset(array , 0 , sizeof(array)); //(어레이, 초기값, 사이즈)
함수의 매개 변수로 배열 사용
int Function(int arr[]){
arr[0] += 1;
arr[1] += 2;
arr[1] += 3;
return 0 ;
}
void main(){
int arr[] = { 4,5,6 };
printf("함수 호출 이전 %d, %d, %d\n", arr[0], arr[1], arr[2]);
Function(arr);
printf("함수 호출 이후 %d, %d, %d\n", arr[0], arr[1], arr[2]);
}
배열 Tips
- 크기 체크 sizeof(배열) or sizeof(데이터형)
- 배열 address
void main(){
int arr[3] = {1,2,3};
printf("크기 비교 %d , %d\n",sizeof(arr), sizeof(arr[0]));
printf("주소 비교 %p , %p\n",arr, &arr[0]);
}
2차원 배열
- arr[행][열]
- 열 : 배열 원소
- 행 : 배열 원소의 집합
- 이차원 배열도 1차원 배열 이다.
- 초기화 방법은 1차원 배열과 동일하나, 초기화 선언 혹은 함수 매개변수 전달시 [열] 에대한 값을 생략 할수 없다.
//1. 선언과 초기화 동시지정
//배열의 갯수를 지정
int arr[][3] = {{1,2,3},{4,5,6}} //값을 초기화
int arr[][3] = {0,} //이후의 값은 모두 0으로 초기화
//2. 인덱싱을 이용한 초기화
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
//3. 표준함수를 이용한 초기화
#include <memory.h>
#include <string.h>
memset(arr , 0 , sizeof(arr)); //(어레이, 초기값, 사이즈)
함수의 매개 변수로 배열 사용
- 1차원 배열과 동일한 방법으로 지정한다. 단지 [][열], 열에 해당하는 인덱스값을 지정해 줘야한다.
3차원 배열 [다차원 배열]
- arr[면][행][열]
- 면 : 행의 집합
- 열 : 배열 원소
- 행 : 배열 원소의 집합
- 3차원 배열도 1차원 배열 이다.
- 초기화 방법은 1,2차원 배열과 동일하나, 초기화 선언 혹은 함수 매개변수 전달시 [행]과 [열] 에대한 값을 생략 할수 없다.
//1. 선언과 초기화 동시지정
//배열의 갯수를 지정
int arr[][2][3] = {{{1,2,3},{4,5,6}},{{1,2,3},{4,5,6}}}; //값을 초기화
int arr[][2][3] = {0,} //이후의 값은 모두 0으로 초기화
//2. 인덱싱을 이용한 초기화
arr[0][0][0] = 1;
arr[0][0][1] = 2;
arr[0][0][2] = 3;
//3. 표준함수를 이용한 초기화
#include <memory.h>
#include <string.h>
memset(arr , 0 , sizeof(arr)); //(어레이, 초기값, 사이즈)
함수의 매개 변수로 배열 사용
- 1차원 배열과 동일한 방법으로 지정한다. 단지 [행][열], 행과 열에 해당하는 인덱스값을 지정해 줘야한다.
'컴퓨터 언어 > C' 카테고리의 다른 글
[C] C언어 7일차 포인터2 (0) | 2020.03.16 |
---|---|
[C] C언어 6일차 포인터 (0) | 2020.03.15 |
[C] C언어 4일차 함수 (0) | 2020.03.13 |
[C] C언어 3일차 반복문과 분기문 (0) | 2020.03.12 |
[C] C언어 3일차 연산자 (0) | 2020.03.12 |