$bash

C - 배열

0x0300 : Study/0x0304 : Programming

배열?

각 저장 곤간을 이름과 index로 구분.

메모리에 저장 공간 한꺼번에 확보.

사용할 때는 하나씩 떼어 쓰는 방식으로 구현


선언과 초기화 그리고 요소의 사용


선언 - int ary[5];

초기화 - int ary[5] = {1, 2, 3, 4, 5};

요소 사용  - ary[0], ary[1], ary[2], ary[3], ary[4]..


배열의 기본적인 예시이다.


int a, b, c, d, e; 를 예시로 들어보자.

여기서는 a , b , c .. 각각의 변수에 4바이트씩 공간이 주어져 있다.


int ary[5]; 는

메모리에 공간이 연속적으로 20바이트가 할당되어 있다.


배열의 초기화

최초 할당된 저장 공간에는 쓰레기값 존재.

// 배열이 선언과 동시에 원하는 값 갖도록 하려면 초기화.


배열은 중괄호로 묶어서 초기화

// 반드시 선언과 동시에 초기화

// 선언하고 난 후에 값 저장하려면 배열 요소에 하나 씩 값 대입



배열과 반복문

배열은 같은 형태의 변수가 많이 필요할 때 쉽게 저장 공간 할당, 초기화 가능한 장점 가짐


모든 배열 요소를 일일이 하나씩 사용하는 것은 번거로움


성적 처리 프로그램을 예시로 반복문과 배열을 조합한 코딩을 할 수 있다.


위에서 보면 알 수 있는데

for (int i = 0; i < 5; i++)

{

printf("%5d\n", score[i]);

}

에서 for에서의 i는 score의 i 를 배열의 첨자로 활용 가능하다.


Sizeof 연산자를 활용한 배열 처리

배열은 보통 많은 양의 데이터 처리

// 반복문 사용 필수


배열 요소 수가 바뀌는 경우?

// 배열 처리 반복문을 모두 수정해야 하는 부담

// 배열 요소 수를 직접 계산 하여 반복문에 사용하면 편리


배열 요소 수 = sizeof (배열명) / sizeof (배열 요소)


sizeof 연산자를 사용한 배열의 예시이다.


cnt = sizeof(score) / sizeof(score[0]);

cnt는 배열 요소 수 (5) 가 되고 score은 배열 전체 크기인 20바이트 이며 배열 요소 하나의 크기는 score[0]이 4바이트로 주어진다.


char 형 배열선언과 초기화

문자열은 문자의 연속

// 문자열 저장할 때는 char형 배열 사용


가장 기본적인 예시이다.


문자열 끝에 널 문자가 없는 경우가 있다

이러한 경우는 쓰레기 값을 문자열로 출력 하기도 한다...


이처럼 뒤에 빈공간이 있다면 글자가 이상한 쓰레기 값이 출력 되는 것을 확인 할 수 있다.

// 물론 테스트는 하지 않았습니다 ^ㅡ^...


문자열 대입

char형 배열은 문자열 저장하는 변수의 역할을 한다.

// 초기화 된 이후에도 새로운 문자열 저장이 가능

// 문자열의 길이가 다를 수 있음


strcpy함수를 활용한 문자열 대입하는 배열 예제이다.


문자열 입출력 함수로 gets, puts가 있다.



'0x0300 : Study > 0x0304 : Programming' 카테고리의 다른 글

Cpp 기초 (A+B 응용화)  (0) 2017.05.24
NASM - LD 컴파일 후 실행  (0) 2017.05.13
C - 배열과 포인터  (0) 2016.06.14
C - 포인터  (0) 2016.06.13
C - 함수  (0) 2016.06.13