컴퓨터 언어/C

[C] C언어 5일차 배열

훈츠 2020. 3. 14. 17:31
반응형

안녕하세요. 훈츠 입니다. 이번 시간에는 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