Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch1
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch14
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch8
- @Aspect
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch7
- 2024 정보처리기사 시나공 필기
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch11
- 2024 정보처리기사 수제비 실기
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch2
- 게시글 목록 api
- 스프링 입문(무료)
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch4
- 타임리프 - 기본기능
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch6
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch9
- 스프링 고급 - 스프링 aop
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch12
Archives
- Today
- Total
나구리의 개발공부기록
Chapter 02 - C언어(배열, 문자열, 구조체) 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/실기 6강 - 프로그래밍 언어 활용
Chapter 02 - C언어(배열, 문자열, 구조체)
소소한나구리 2024. 5. 21. 22:592024년도 수제비 실기책(6판) 내용 정리
9. 배열
1) 배열(Array) 개념
- 같은 자료형의 변수들로 이루어진 집합
2) 배열 종류
(1) 1차원 배열
구분 | 선언 |
초깃값이 없는 경우 | 자료형 배열명[배열_요소_개수]; |
초깃값이 있는 경우 | 자료형 배열명[배열_요소_개수] = {초깃값}; |
- 배열 요소 개수에 정의된 숫자만큼 같은 자료형의 데이터 공간이 할당됨
- 초깃값을 선언하지 않으면 쓰레깃값이 저장됨
- 배열 요소 개수보다 적은 개수만큼 초기화 하면 초깃값이 명시되지 않은 값들은 정수형은 0, 실수형은 0.09 문자형은 NULL로 초기화가 됨
- NULL이 아스키코드로 0이므로 결국 C언어는 배열 요소 개수보다 적은 개수만큼 초기화하면 0으로 저장된다고 보면 됨
#include <stdio.h>
int main() {
int a[3] = {1, 2}; // int배열 a의 길이를 3으로 하고 1, 2를 초기값으로 초기화
// a는 1, 2, 0의 값을 가지게 되고 각 인덱스 값은 0,1,2가 됨
// a[0] = 1, a[1] = 2, a[2] = 0
int i;
for (i=0; i<3; i++) // i가 3이미만까지(0,1,2 3번 수행)
printf("%d\n", a[i]); // a[0]의값, a[1]의값, a[2]의 값을 꺼냄
return 0;
}
// 1
// 2
// 0
(2) 2차원 배열
구분 | 선언 |
초깃값이 없는 경우 | 자료형 배열명[행의 개수][열의 개수]; |
초깃값이 있는 경우 | 자료형 배열명[행의 개수][열의 개수] = {초깃값}; |
- 행의 개수 x 열의 개수에 정의된 숫자만큼 같은 자료형의 데이터 공간이 할당 되며 마찬가지로 초기값을 선언하지 않으면 쓰레기 값이 저장됨,
- 행의 개수, 열의 개수 보다 적은 개수만큼 초기화하면 0, 0.0, NULL 값으로 초기화 됨
#include <stdio.h>
int main() {
int a[2][3] = {1, 2, 3, 4}; // int 타입 배열 a에 행이 2개 열이 3개인 공간을 할당
// 초기값으로 1, 2, 3, 4를 저장하고 나머지 공간은 0이 저장됨
// a[0][0] = 1, a[0][1] = 2, a[0][2] = 3
// a[1][0] = 4, a[1][1] = 0, a[1][2] = 0
int i; j;
for (i=0;, i<2; i++) // 1차 반복문으로 i값을 a[i][]로 집어넣어서 행의 인덱스를 순차적으로 탐색
for (j=0, j<3; j++) // 2차 반복문으로 j값을 a[][j]로 집어넣어서 열의 인덱스를 순차적으로 탐색
printf("%d ", a[i][j]);
return 0;
}
// 1 2 3 4 0 0 이 출력됨
// 2중 반복문이 돌면 위에 적인 배열의 인덱스 순서대로 출력됨
10. 문자열
1) 1차원 배열과 문자열
- C언어에서는 문자열을 char형 배열로 표현함
- 문자열을 초기화 할 때 마지막에 NULL 문자가 삽입되므로 초기화 하는 글자수보다 1이상 큰 값으로 배열을 선언(배열의 크기를 명시하지 않으면 문자열의 문자 수 + 1만큼 자동으로 생성됨)
- printf함수에서 %s를 이용하여 문자열을 읽고 출력하는데 printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작 주소부터 NULL 직전값까지 읽어서 출력함
- 문자열에서 주소는 포인터를 배워야 이해할 수 있는 내용, scanf에서 변수에 &를 붙여도 되고, 1차원 배열에서는 대괄호를 빼고 써도 됨, ex) &a[n] = a의 n번째 값 주소, a = a의 0번째 값 주소, a+3 = a의 3번째 값 주소
#include <stdio.h>
int main() {
char a[8] = "Hello" // char타입 a에 크기가 8인 배열을 선언 후 Hello를 저장하고 나머지 값은 NULL이 저장
// a대신 &a로 a+1대신 &a[1]로 밖꿔도 결과는 동일함
printf("%s\n", a); // a의 0번째 주소부터 null값까지 출력, Hello
printf("%s\n", a+1); // a의 1번째 주소값 출력 null값까지 출력, ello
a[3] = NULL; // a의 3번재인덱스의 값을 NULL로 변경(l이 NULL로 변경됨)
printf("%s\n", a+1); // 위와 동일하나 a[3]이 NULL이 되었으므로 el출력
printf("%s\n", a+4); // o
}
// Hello
// ello
// el
// o
2) 2차원 배열과 문자열
- 문자열을 여러 개 정의할 때 char형 2차원 배열을 사용
#include <stdio.h>
int main() {
char a[2][8] = {"Hello","Soojebi"};
// 0 1 2 3 4 5 6 7
// a[0] = H, e, l, l, o, NULL, NULL, NULL
// a[0] = S, o, o, j, e, b, i, NULL
printf("%s\n", a[0]); // a의 0번째 행의 첫번째 요소부터 NULL값까지 출력
printf("%s\n", a[1]); // a의 1번째 행의 첫번째 요소부터 NULL값까지 출력
printf("%s\n", a[1]+3); // a의 1번째 행의 3번째 요소부터 NULL값까지 출력
a[1][4] = NULL; // 해당 위치의 값을 NULL로 변경(soojebi의 e를 NULL로 변경)
printf("%s\n", a[1]+2); // a의 1번째 행의 2번재 요소분터 NULL값까지 출력
}
// Hello
// Soojebi
// jebi
// oj
11. 구조체
1) 구조체(Structure Type) 개념
- 사용자가 기본 자료형을 가지도 새롭게 정의할 수 있는 사용자 정의 자료형
2) 구조체 선언
struct 구조체명{
자료형 변수명1;
자료형 변수명2;
}
strcut 구조체명 구조체변수();
// 구조체는 구조체변수.변수명 형태로 값을 가르킴
#include <stdio.h>
struct Student { // 구조체 선언 시작
char gender; // 구조체의 char타입 변수 gender 선언
int age; // 구조체의 int타입 변수 age 선언
}
int main() {
// 구조체타입 변수 s를 선언하고 gender의 값을 'F', age의 값을 21로 초기화
struct Student s = {'F', 21};
s.gender = 'M'; // s의 gender의 값을 'M'으로 초기화
printf("%c", s.gender); // M 출력(문자형태)
printf("%d," s.age); // 21 출력(10진 정수 형태)
return 0;
}
//M21
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 실기 6강 - 프로그래밍 언어 활용' 카테고리의 다른 글
Chapter 02 - C언어(포인터) (1) | 2024.05.27 |
---|---|
Chapter 02 - C언어(함수) (0) | 2024.05.24 |
Chapter 02 - C언어(조건문, 반복문) (0) | 2024.05.21 |
Chapter 02 - C언어(연산자) (0) | 2024.05.20 |
Chapter 02 - C언어(변수, 표준 입출력 함수) (0) | 2024.05.19 |