본문 바로가기
정보처리기사/프로그래밍 언어 활용

C언어의 배열과 구조체

by jhwannabe 2023. 7. 20.

C언어 배열

배열(Array) 변수

  • C언어의 사용자 정의 자료형 : 배열, 구조체, 공용체
  • 한 번의 선언으로 여러 개의 메모리 공간을 관리할 수 있음
  • 같은 자료형의 값을 메모리 공간에 순서적으로 하나의 이름(배열명)으로 모아 놓은 곳
  • 배열 변수 선언문
    • 자료형 배열명[배열요소의 개수];             // 1차원 배열
    • 자료형 배열명[행의 개수][열의 개수];      // 2차원 배열

배열의 초기화

  • 배열 요소의 범위 : 배열명[0] ~ 배열명[첨자-1]
  • 배열의 첨자(index) : 0부터 시작
  • 배열 선언과 동시에 초기화 시 요소의 개수는 생략할 수 있음
  • 배열 초기화의 예
    • int a[3] = {1,2,3};
    • int b[] = {10, 20, 30};
    • static int c[5] = {11, 22};

 

C언어 1차원 배열과 2차원 배열

1차원 문자 배열과 문자열

  • 문자열 상수를 1차원의 문자 배열과 문자열 배열을 통해 메모리에 저장하여 참조함
  • 문자열 배열은 문자 배열보다 1byte의 널문자('\0')를 포함하고 있음
  • 문자 상수의 경우는 1byte의 char 자료형으로 문자형 변수에 저장됨. 이때 문자 상수는 ASCII코드로 표현됨
코드 #include <stdio.h>
int main(int argc, char *argv[])
{
    int i;
    char ch[4] = {'H', 'R', 'D', 'K'};
    char str[5] = "hrdk";
    for(i=0; i<4; i++)
        print("%c", ch[i]);
    printf("\n");
    printf("%s\n", str);
    return 0;
}
해설 및 결과 배열의 이름은 배열의 첫 요소(첨자: 0)의 주소를 의미하기 때문에 printf("%s\n", str); 명령문은 printf("%s\n", &str[0]);와 동일함.
배열명을 %s 출력형색으로 출력하면 문자열 배열의 시작부터 '\0' (NULL 문자) 이전 문자까지 연속해서 모두 출력됨
[결과]
HRDK
hrdk

2차원 배열

  • 2차원 배열의 선언 형식 : 자료형 배열명[행 개수][열 개수];
  • 2차원 배열변수의 원소에 초깃값을 배정하면 행 우선(Row-Major) 원칙을 적용하여 행 인덱스를 고정한 상태에서 열 인덱스를 먼저 증가시키면서 초기값을 배정함
  • 2차원 배열의 인덱스의 시작값은 행 인덱스와 열 인덱스 모두 0임.
코드 #include
int main(int argc, char *argv[])
{
    int i, j, sub_total;
    char s[3][2] = { {10, 20}, {30, 40}, {50, 60} };
    for(i=0; i<3; i++) {
        sub_total = 0;
        for(j=0; j<2; j++
            sub_total += s[i][j];
        printf("%d번 학생 총점 : %d\n", i+1, sub_total);
    }
    return 0;
}
결과 [결과]
1번 학생 총점 : 30
2번 학생 총점 : 70
3번 학생 종점 : 110

 

C언어 구조체

구조체(Structure)

  • 구조체는 서로 연관된 데이터들을 모아 놓은 것
  • 서로 다른 자료형의 값을 메모리 공간에 순서적으로 하나의 단위로 참조할 수 있도록 구성해 놓은 것
  • 구조체는 struct라는 예약어를 이용하여 선언함
  • 구조체는"구조체 선언 → 구조체 변수 선언 → 구조체 멤버의 참조"순으로 사용함

구조체 선언

  • 구조체 선언은 일반적으로 함수의 외부에 선언함
  • 구조체 선언문
struct 구조체명
{
	데이터형1 멤버명1;
    데이터형2 멤버명2;
    ...
}

구조체 변수 선언

  • 구조체 선언에 의해 선언된 구조체형을 가지는 구조체 변수를 선언함
  • 구조체 변수 선언문
struct 구조체명 구조체변수명;

구조체 멤버의 참조

  • 구조체 멤버 참조 연산자(.)을 사용하여 멤버를 참조함
  • 구조체 멤버의 참조
구조체변수명.멤버명 = 값;
printf("%d", 구조체변수명.멤버명);
728x90
반응형

'정보처리기사 > 프로그래밍 언어 활용' 카테고리의 다른 글

스크립트 언어와 Python  (0) 2023.08.04
제어문  (0) 2023.08.04
Java 언어의 클래스와 상속  (0) 2023.07.20
C언어의 연산자  (0) 2023.07.20
C언어의 개요  (0) 2023.07.20