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 |