[로데시] 개발
[정처기 실기] 6. 프로그래밍 언어 활용 요약 - C언어2 본문
반응형
☰ 정보처리기사 실기
📌 1차원 배열
📌 2차원 배열
cf) 문자열과 주소
(2) 2차원 배열과 문자열
(2) 구조체 선언
(2) 사용자 정의 함수(User-Defined Function)
① 매개변수 전달 방법(Parameter Passing Mechanism)
📌 구성요소
📌 종류
② 재귀함수(Recursive Function)
(3) 표준 함수
📌 문자열 함수 ㅡ string.h 헤더 추가
📌 수학 함수 ㅡ math.h 헤더 추가
📌 유틸리티 함수 ㅡ stdlib.h, time.h 헤더 추가
(1) 포인터 선언
(2) 배열과 포인터
ㆍ포인터와 배열 -> 둘 다 주소 갖고 있다.
📌 1차원 배열과 포인터
ㆍa[]의 주솟값을 각각 100, 101, 102 로 가정
ㆍp는 a의 주솟값인 100을 갖고 있음
ㆍ이를 표로 나타내면 다음과 같다
p
ㆍ그림을 꼭 그려서 포인터에 익숙해지길 바랍니다
ㆍp*는 '그 곳의 값'임을 명심
예제)
📌 2차원 배열과 포인터
ㆍa[][]의 주솟값을 각각 100, 101, 102, 103, 104, 105 로 가정
ㆍp*는 '그 곳의 값'임을 명심
ㆍa는 100번지임을 명심
ㆍ*a도 100번지임을 명심. 왜냐하면 a가 가리키는 곳의 값은 대표행 a[0]의 주소를 의미
ㆍ**a는 '그 곳의 값의 값'임을 명심. 즉, 100번지의 값이므로 1
a
p
예제)
📌 2차원 배열과 포인터 배열
ㆍ포인터 배열: 포인터 변수의 배열화, 배열 요소에 주솟값이 있다
ㆍstudent[]에는 주솟값이 들어감
ㆍstudent[]의 주솟값을 100번지 로 가정
ㆍkim, lee, han가 들어간 주솟값을 각각 20번지, 30번지, 40번지 로 가정
ㆍkim에서 k 20번지, i 21번지, m 22번지로 연속해서 주솟값이 들어간다. lee, han도 동일
예제)
ㆍarray[]에는 주솟값이 들어감
ㆍarray[]의 주솟값을 100번지 로 가정
ㆍGood morning, C language의 주솟값을 각각 20번지, 50번지 로 가정
예제)
Ⅵ. 프로그래밍 언어 활용
02. C언어
1️⃣ 배열
(1) 배열 종류📌 2차원 배열
| 1 | 2 | 3 |
| 4 | 0 | 0 |
| H | e | l | l | o | NULL | NULL | NULL |
| c | o | m | p | u | t | e | r |
2️⃣ 문자열
(1) 1차원 배열과 문자열ㆍchar 형 배열로 표현
ㆍ초기화 할 때 마지막에 NULL 문자 삽입
ㆍprintf("%s")시 NULL 직전까지 읽어서 출력
ㆍ초기화 할 때 마지막에 NULL 문자 삽입
ㆍprintf("%s")시 NULL 직전까지 읽어서 출력
cf) 문자열과 주소
int a[5]
ㆍ&a[0] <=> a <=> a의 0번째 주소
ㆍ&a[3] <=> a + 3 <=> a의 3번째 주소
ㆍ&a[0] <=> a <=> a의 0번째 주소
ㆍ&a[3] <=> a + 3 <=> a의 3번째 주소
(2) 2차원 배열과 문자열
ㆍchar 형 2차원 배열을 사용
ㆍ&a[0][0] <=> a[0] <=> a의 0번째 행, 0번째 열의 주소
ㆍ&a[1][2] <=> a[1] + 2 <=> a의 1번째 행, 2번째 열의 주소
ㆍ&a[0][0] <=> a[0] <=> a의 0번째 행, 0번째 열의 주소
ㆍ&a[1][2] <=> a[1] + 2 <=> a의 1번째 행, 2번째 열의 주소
3️⃣ 구조체(Structure Type)
(1) 구조체 개념ㆍ기본 자료형으로 새롭게 정의할 수 있는 사용자 정의 자료형
ㆍ초기화 할 때 마지막에 NULL 문자 삽입
ㆍprintf("%s")시 NULL 직전까지 읽어서 출력
ㆍ초기화 할 때 마지막에 NULL 문자 삽입
ㆍprintf("%s")시 NULL 직전까지 읽어서 출력
(2) 구조체 선언
ㆍ구조체 정의
ㆍ구조체 변수 선언 및 초기화
ㆍ구조체 멤버 접근
ㆍ구조체 변수 선언 및 초기화
ㆍ구조체 멤버 접근
4️⃣ 함수
(1) main 함수ㆍ모든 프로그램의 시작
ㆍvoid main() 일 경우, return; orreturn 자체를 사용 안 함
ㆍint main() 일 경우, return 반환값; 명시
ㆍvoid main() 일 경우, return; or
ㆍint main() 일 경우, return 반환값; 명시
(2) 사용자 정의 함수(User-Defined Function)
ㆍ매개변수, 생성된 변수 -> 사용자 정의 함수 종료되면 없어짐
ㆍmain 함수에서 fn() 호출 시 ->
1) main 함수 위에 fn() 작성
2) fn()이 함수라고 명시
ㆍmain 함수에서 fn() 호출 시 ->
1) main 함수 위에 fn() 작성
2) fn()이 함수라고 명시
ㆍ매개변수(parameter) - 호출하는 쪽에서 전달받는 변수의 값/주솟값
ㆍ전달인자(argument) - 호출하는 쪽에서 전달하는 변수의 값/주솟값
ㆍ전달인자(argument) - 호출하는 쪽에서 전달하는 변수의 값/주솟값
📌 종류
ㆍCall by Value
- 새로운 공간에 할당
- 실 매개변수에 영향 X
ㆍCall by Reference
- 메모리 공간의 주소 전달
- 실 매개변수의 주소를 형식 매개변수로 보냄
- 새로운 공간에 할당
- 실 매개변수에 영향 X
ㆍCall by Reference
- 메모리 공간의 주소 전달
- 실 매개변수의 주소를 형식 매개변수로 보냄
② 재귀함수(Recursive Function)
ㆍ함수 자신이 자신을 부르는 함수
ㆍ계산이 끝나면 main으로 return
ㆍ계산이 끝나면 main으로 return
(3) 표준 함수
ㆍstrcat (Concatenate - 문자열끼리 연결)
ㆍstrcpy (Copy - 문자열 복사)
ㆍstrcmp (Compare - 문자열 비교)
strcmp(s1,s2); 일 때, s1 > s2면 1, s1 = s2면 0, s1 < s2면 -1을 반환 (아스키 코드를 비교)
ㆍstrlen (Length - 문자열 길이)
ㆍstrrev (Reverse - 문자열 뒤집음)
ㆍstrchr (Char - 일치하는 문자 있는지 검사)
ㆍstrcpy (Copy - 문자열 복사)
ㆍstrcmp (Compare - 문자열 비교)
strcmp(s1,s2); 일 때, s1 > s2면 1, s1 = s2면 0, s1 < s2면 -1을 반환 (아스키 코드를 비교)
ㆍstrlen (Length - 문자열 길이)
ㆍstrrev (Reverse - 문자열 뒤집음)
ㆍstrchr (Char - 일치하는 문자 있는지 검사)
📌 수학 함수 ㅡ math.h 헤더 추가
ㆍsqrt(n) - 양의 제곱근 계산, 소수 확인할 때 사용
ㆍceil(n) - 소수점 올림
ㆍfloor(n) - 소수점 내림
ㆍceil(n) - 소수점 올림
ㆍfloor(n) - 소수점 내림
📌 유틸리티 함수 ㅡ stdlib.h, time.h 헤더 추가
ㆍrand() - 임의의 값 생성 (0~32767(=215-1))
ㆍsrand(seed) - seed 값에 따른 임의의 값 생성
ㆍtime() - 현재 시간 가져옴
ㆍatoi(str) - 문자열(str) -> 정수형(int) 변환
ㆍatof(str) - 문자열(str) -> 실수형(float, double) 변환
ㆍitoa(value, str, radix) - value 를 변환하여 str에 radix 진수로 저장
ㆍsrand(seed) - seed 값에 따른 임의의 값 생성
ㆍtime() - 현재 시간 가져옴
ㆍatoi(str) - 문자열(str) -> 정수형(int) 변환
ㆍatof(str) - 문자열(str) -> 실수형(float, double) 변환
ㆍitoa(value, str, radix) - value 를 변환하여 str에 radix 진수로 저장
5️⃣ 포인터
포인터 - 변수의 주솟값 저장자료형* 포인터변수명 = & 변수명
* : 자료형과 쓰임 - 주솟값을 저장하는 변수 선언
포인터 변수명/주솟값을 의미하는 변수와 함께 쓰임 - 그 주소의 값
& : 변수명 앞에 붙음 - 해당 변수명의 주솟값
ex)
* : 자료형과 쓰임 - 주솟값을 저장하는 변수 선언
포인터 변수명/주솟값을 의미하는 변수와 함께 쓰임 - 그 주소의 값
& : 변수명 앞에 붙음 - 해당 변수명의 주솟값
ex)
(2) 배열과 포인터
📌 1차원 배열과 포인터
ㆍa[]의 주솟값을 각각 100, 101, 102 로 가정
ㆍp는 a의 주솟값인 100을 갖고 있음
ㆍ이를 표로 나타내면 다음과 같다
| a | a[0] | a[1] | a[2] | |
| 주솟값 | 100 | 100 | 101 | 102 |
| 값 | 1 | 2 | 3 |
p
| 100 |
ㆍ그림을 꼭 그려서 포인터에 익숙해지길 바랍니다
ㆍp*는 '그 곳의 값'임을 명심
예제)
📌 2차원 배열과 포인터
ㆍa[][]의 주솟값을 각각 100, 101, 102, 103, 104, 105 로 가정
ㆍp*는 '그 곳의 값'임을 명심
ㆍa는 100번지임을 명심
ㆍ*a도 100번지임을 명심. 왜냐하면 a가 가리키는 곳의 값은 대표행 a[0]의 주소를 의미
ㆍ**a는 '그 곳의 값의 값'임을 명심. 즉, 100번지의 값이므로 1
a
| 100 |
| 대표행주소 | 대표행 | 값 | |
| 100 | a[0] | 1 | 2 |
| 102 | a[1] | 3 | 4 |
| 104 | a[2] | 5 | 6 |
p
| 102 |
예제)
📌 2차원 배열과 포인터 배열
ㆍstudent[]에는 주솟값이 들어감
ㆍstudent[]의 주솟값을 100번지 로 가정
ㆍkim, lee, han가 들어간 주솟값을 각각 20번지, 30번지, 40번지 로 가정
ㆍkim에서 k 20번지, i 21번지, m 22번지로 연속해서 주솟값이 들어간다. lee, han도 동일
| student | 20번지 | 30번지 | 40번지 |
| 100 | 100 | 101 | 102 |
| 20번지 | k | i | m |
| 30번지 | l | e | e |
| 40번지 | h | a | n |
예제)
ㆍarray[]에는 주솟값이 들어감
ㆍarray[]의 주솟값을 100번지 로 가정
ㆍGood morning, C language의 주솟값을 각각 20번지, 50번지 로 가정
| array | 20번지 | 50번지 |
| 100 | 100 | 101 |
| 20번지 | G | o | o | d | m | o | r | n | i | n | g | |
| 50번지 | C | l | a | n | g | u | a | g | e |
예제)

반응형
'자격증 > 정보처리기사 - 실기' 카테고리의 다른 글
| [정처기 실기] JAVA - P p = new C(); 상속 예제 문제 (0) | 2026.03.29 |
|---|---|
| [정처기 실기] 6. 프로그래밍 언어 활용 요약 - JAVA1 (0) | 2026.03.27 |
| [정처기 실기] 6. 프로그래밍 언어 활용 요약 - C언어1 (0) | 2026.03.20 |
| [개념 정리] Ⅰ. 요구사항 확인 - 현행 시스템 분석, 요구사항 확인 (0) | 2025.10.04 |