TIL C언어 입문3

김지수·2022년 10월 22일
0

SW사관학교정글5기

목록 보기
3/13

배열

1. 배열 선언하고 사용하기

  • 배열은 자료형이 가튼 변수들을 그룹으로 묶어서 관리할 때 사용
  • [ ]를 사용하여 저장 공간을 몇 개 만들 것인지 명시

    Short student [20];

  • short - 자료형 / student - 변수 이름 / [20] - 요소 개수

2. 배열의 요소에 접근하기

  • 변수의 개별 요소에 접근하기 위해서는 변수 이름 뒤에 [] 를 적고 자신이 사용하고 싶은 색인(Index)을 명시
  • 배열 인덱스는 0부터 시작하여 1씩 증가
  • 배열의 요소가 N 개라면 색인은 0 ~ N-1 까지 사용 가능

3. 배열의 특정 요소에 값 대입하기

  • []기호를 사용하여 특정 요소의 위치를 명시하여 배열의 항목에 값을 저장

    student[1] = 10;

  • student배열에 인덱스값 '1'을 가지는 곳에 '10'을 저장

4. 배열 요소에 for문으로 값 대입하기

  • 배열의 특정 요소에 값을 대입할 때에는 [ ] 안에 변수 사용 가능
int index = 1;
student[index] = 10;  /* student[1] = 10; 같은 의미
  • 반복문 사용하여 값 입력하기
short student[20], i;
for(i = 0; i < 5; i++)
	student[i] = 5;
    
/* index값이 0에서 4(5미만)까지의 배열에 값 5를 저장 */

5. 배열 초기화하기

  • 배열로 선언한 변수는 자동 초기화되지 않는다
  • 배열의 각 요소에 일정한 값을 대입하여 초기화한 후 사용
  • 일반적으로 초기값 0을 사용
 short student[10] = {0,0,0,0,0,0,0,0,0,0};
 short student[10] = {0,}  // 위와 같은 10개의 0을 가진 배열로 된다
 
 /*!!!! 값을 지정하지 않을 경우 0으로만 초기화 됩니다 */
 short student[5] = {3,} // {3,0,0,0,0} 처음 인덱스부분의 값만 3으로 초기화 나머지는 0

6. 배열은 사용자 정의 자료형

  • 배열은 같은 크기의 메모리를 그룹으로 묶어 새로운 크기의 변수를 만들기 때문에 사용자 정의 자료형(User-defined Data Type) 이다

7. 지정된 문자열의 길이 구하기

  • 배열에 저장된 문자열의 길이를 알기 위해서 문자열의 끝(0, End Of Line)을 찾는 코드가 필요

#include <stdio.h>
int StringLength( char data[ ])
{
	int count = 0;
    while( data[count] ) count++;  /*0이 나올 때 까지 문자의 개수를 더함 */
    return count;
}

void main()
{
	int data_length;
    char data[10] = "hungry";
    data_length = StringLength(data);
    printf("data length = %d\n", data_length);
}
  • C내장 함수 찾아서 사용하는 것이 좋다

    strlen = string + length 문자열의 길이를 구하는 문자열 표준 함수
    strcpy = string + copy 문자열을 복사하는 문자열 표준 함수
    strcat = string + strcat 문자열 뒤에 다른 문자열을 덧붙이는 문자열 표준 함수

    #include <stdio.h>
    #include <string.h>	// strlen 내장함수를 사용하기 위해 지정
    
    void main()
    {
    	int data_length;
      char data[10] = "hungry";
      data_length = strlen(data);
      printf("data length = %d\n", data_length);
    }

2차원 배열

1. 2차원 배열의 필요성

  • 2차원 공간에 있는 한 점(대상)은 자신의 위치를 좌표로 나타낼 때 (x축 좌표 값, y축 좌표 값) 형태로 사용

2. 2차원 배열 선언하기

  • 같은 크기의 변수를 나열해서 적는 것이 불편하기 때문에 배열을 사용해서 크기가 같은 변수들끼리 묶어서 사용
/* cahr[4] 형식의 1차원 배열 5개를 선언함 */
char data1[4], data2[4], data3[4], data4[4], data5[4];

/* char[4] 형식의 1차원 배열 5개를 묶어 2차원 배열로 선언함 */
char data[5][4];

5 x 4 의 배열을 나타날 때 : Matrix[5][4] 라고 한다
char (Martix[5])[4] <<< 연산자 우선 순위로 인하여 왼쪽부터 차례대로 연산을 수행

3. 1차원 데이터를 2차원 데이터로 변환하기

  • 2차원 배열은 메모리상에 1차원 형태로 데이터를 저장하면서 프로그래머가 이 메모리를 사용할 때 컴파일러가 수학 공식을 적용하여 2차원 개념을 제공
/* 두 배열의 메모리 형태는 동일 */
char temp[5][4]		//  5 x 4 2차원 배열
char temp[20]		//  20개의 1차원 배열
char temp [M][N];	/* L,M,N 값은 숫자 상수로 가정 */
char test [L];		/* M * N 값이 L과 같가도 가정 */
  • test[a] 항목과 temp[a / N][a % N]항목은 위치가 같다
  • temp[b][c] 항목과 test[b x N + c] 항목은 위치가 같다

0개의 댓글