C언어 학습
약 3주 정도 남은 정보처리기사 실기 시험 이제 졸업 학기라 부랴부랴 공부해야 합니다. 수제비 카페에서 어떤 분이 3주 계획을 적어주신 게 있어서 그대로 따라 해보려고 합니다. 총 2 회독하는 것이고 프로그래밍 과목부터 시작입니다.
오늘 공부한 C언어를 저의 나름대로 정리 해보겠습니다.
자료형
자료형 유형
유형 | 설명 | 선언 형식 |
문자(Character) | 문자 하나를 저장할 때 사용하는 자료형 | char |
정수(Integer) | 정숫값을 저장하고자 할 때 사용하는 자료형 | int |
부동 소수점(Floating Point) | 소수점을 포함하는 실숫값을 저장하고자 할 때 사용하는 자료형 | float, double |
식별자
식별자 규칙
구분 | 규칙 | 사용 예시 | 불가능 예시 |
사용 가능 문자 | 영 대문자/소문자, 숫자, 밑줄 | C, num, _, _c | !d, @d |
변수 사용 규칙 | 첫 자리에 숫자 불가능 중간에 공백 사용 불가능 |
teacher_name | teacher name |
변수 의미 부여 | 예약어 사용 불가능 | If, For | float, double, int, if |
변수
변수 선언
초기화하지 않는 경우 | 자료형 변수명; |
초기화하는 경우 | 자료형 변수명 = 초깃값; |
전역 변수(Global Variable)
- 어떤 블록에도 속하지 않는 변수이다.
- 전역 변수는 아무 곳에서나 사용할 수 있다.
- 프로그램이 실행되면 변수가 생성되고 종료되면 사라진다.
지역 변수(Local Variable)
- 지역 변수는 블록 내에서 선언한다.
- 해당 블록 안에서만 사용할 수 있다.
static 변수(Static Variable)
- 블록 내외부 상관없이 선언할 수 있는 변수이다.
- 변수 선언할 때 static 키워드를 붙여야 한다.
- 전역변수와 마찬가지로 실행할 때 생성 종료되면 사라진다.
- 전역 변수로 생성할 경우 프로그램 전체에서 사용가능하지만, 블록 내에서 선언할 경우 블록 내에서만 사용 가능하다.
표준 입출력 함수
이스케이프 문자를 이용한 출력
종류 | 의미 | 설명 |
\n | New Line | 커서를 다음 줄 앞으로 이동 |
\t | Tab | 커서를 일정 간격만큼 수평 이동 |
포맷 스트링을 이용한 변수 출력
유형 | 설명 | 의미 | 설명 |
문자 | %c | Character | 문자 1글자에 대한 형식 |
문자열 | %s | String | 문자가 여러 개인 문자열에 대한 형식 |
정수 | %u | Unsigned Decimal | 부호 없는 10진수 정수 |
%d | Decimal | 10진수 정수 | |
%o | Octal | 8진수 정수 | |
%x %X |
Hexa Decimal | 16진수 정수 %x일 경우 영어로 표기되는 부분이 소문자로, %X일 경우 영어로 표기되는 부분이 대문자로 표시 |
|
부동 소수점 | %e %E |
Exponent | 지수 표기 %e눈 자수 표현을 e로 하고, %E는 지수 표현을 E로 한다. |
%f | Floating Point | 부동 소수점 표기 | |
%lf | Long Floation Point | 부동 소수점 표기 |
포맷 스트링을 이용한 변수 상세 출력
포맷 스트링 | 설명 |
[-] | [-]를 붙이면 왼쪽 정렬 [-]를 붙이지 않고 [전체자리수]가 적혀 있다면 오른쪽 정렬 |
[0] | [0]을 붙이면 전체 자릿수에서 앞에 빈공간 만큼 0으로 채운다. |
[전체자리수] | [전체자리수]만큼 공간이 확보됨 소수점(.)도 한 자릿수로 포함됨 |
[소수점자리수] | [소수점자리수]만큼 소수점이 출력됨 실수형일 때만 적용 |
scanf 함수 VS gets 함수
scanf 함수는 키보드로 입력받은 문자열에서 지정된 포맷 스트링을 데이터를 얻는다.
gets 함수는 키보드로 입력받은 문자열을 문자형 배열에 저장하는 함수이다.
연산자
연산자 종류
종류 | 설명 | 연산자 |
증감 연산자 | 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용 | ++, -- |
산술 연산자 | 산술식을 구성하는 연산자 | +, -, *, /, % |
시프트 연산자 | 비트를 이동시키는 연산자 | <<, >> |
관계 연산자 | 두 피연산자 사이의 크기 비교 | >, <, >=, <=, ==, != |
비트 연산자 | 비트 단위로 논리 연산할 때 사용 | &, |, ^, ~ |
논리 연산자 | 연산자 사이의 논리적인 관계 정의 | &&, ||, ! |
삼항 연산자 | 물음표(?)와 클론(:) 사이의 값을 적고 조건식에 대한 참 거짓을 반환 | (조건식)? (참) : (거짓) |
대입 연산자 | 변수에 값을 대입할 때 사용하는 연산자 | =, +=, -=, *=, /=, %= |
연산자 순위 외우기(두음)
증산시 관비 논삼대
- 주의 -
단항 연산자 ' ! ', 비트 연산자 ' ~ '는 2순위
조건문
if 문
if(조건문) {
명령문;
}
else if(조건문) {
명령문;
}
else {
명령문;
]
switch 문
switch(식){
case 값:
명령문;
break;
default:
명령문;
}
반복문
while 문
while(조건문){
명령문;
}
do - while 문
do{
명령문;
} while(조건문);
for 문
for (초기식; 조건식; 증감식) {
명령문;
}
명령문;
배열(Array)
1차원 배열
구분 | 선언 |
초기값이 없는 경우 | 자료형 배열명[배열_요소_개수]; |
초깃값이 있는 경우 | 자료형 배열명[배열_요소__개수] = {초깃값}; |
2차원 배열
구분 | 선언 |
초깃값이 경우 | 자료형 배열명[행의 개수][열의 개수]; |
초깃값이 있는 경우 | 자료형 배열명[행의 개수][열의 개수] = {초깃값}; |
구조체 선언
구조체 선언
struct 구조체명 {
자료형 변수명1;
자료형 변수명2;
...
}
struct 구조체명 구조체변수;
함수
main 함수
void main | int main |
void main( ) { return; } |
int main( ) { return 반환값; } |
반환할 값이 없으므로 return;을 사용하거나 return 자체를 사용하지 않는다. | int main( )일 경우 return 반환값;을 명시해주어야 한다. |
사용자 정의 함수
자료형 함수명(자료형 변수명, ...) {
명령어
return 반환값;
}
매개변수 전달 방법
#include <studio.h>
int fn(int x, int y) { -> 매개변수
...
}
void main( ) {
int i, j;
...
fn(i, j); -> 전달인자
}
종류 | 설명 |
Call by Value | 변수의 값을 넘겨주고, 이 값은 새로운 공간에 할당되어 사용하는 방식 |
Call by Reference | 변수의 값이 아닌 변수가 사용 중인 메모리 공간의 주소를 넘겨주는 방식 |
재귀 함수
재귀 함수는 함수 자신이 자신을 부르는 함수이다.
자료형 함수명(자료형 변수명, ...) {
...
함수명(변수명, ...)
...
return 반환값;
}
문자열 함수
strcat: 문자열끼리 연결하는 함수
strcat(dest,src) | src의 문자열을 dest 문자열 뒤에 붙인다. |
strncat(dest, src, maxlen) | src의 문자열에서 maxlen의 개수만큼 dest 문자열 뒤에 붙인다. |
strcpy: 문자열을 복사하는 함수
strcpy(dest, src) | src의 문자열을 dest 문자열에 복사 |
strcpy(dest, src, maxlen) | src의 문자열에서 maxlen의 개수만큼 dest 문자열에서 복사 |
strcmp: 문자열을 비교하는 함수
strcmp(s1, s2); | s1, s2의 대소를 비교 |
strcmp(s1, s2, maxlen) | maxlen 길이만큼만, s1 s2의 대소를 비교 |
strlen:문자열의 길이를 알려주는 함수
strlen(s) | s의 길이를 알려준다. |
strrev: 문자열을 거꾸로 뒤집는 함수
strrev(str) | str 내에 문자열을 거꾸로 뒤집는다. |
strchr: 문자열 내에 일치하는 문자가 있는지 검사하는 함수
strchr(str, c) | str 내에 c가 존재하는지 알려준다. |
수학 함수
sqrt: 양의 제곱근을 계산하는 함수
sqrt(n) | 루트(n)의 값을 계산한다. |
ceil: 소수점 올림 함수
ceil(n) | 소수점 올림 Ex)ceil(1.1) = 2 |
floor: 소수점 내림 함수
floor(n) | 소수점 내림 Ex) ceil(1.1) = 1 |
유틸리티 함수
rand(Random): 임의의 값을 생성하는 함수
rand( ); | 임의의 정숫값 1개를 생성 |
srand(Seed Random): 난수 알고리즘에 사용하는 seed를 정해주는 함수
srand(seed) | seed 값에 따라 난수 발생기를 초기화됐다. |
time(NULL): 현재 시간을 가져오는 함수
time(NULL) | time 함수에 파라미터를 NULL로 하면 현재 시간을 리턴 |
포인터
포인터 선언
자료형* 포인터_변수명 = $변수명;
배열과 포인터
구분 | 코드 |
배열의 i번지 주소 | 배열+i == &배열[i]; |
배열의 i번지 값 | *(배열+i) == 배열[i]; |
구조체와 포인터
일반 구조체 변수로 접근할 때는 ' . '으로 접근하고, 구조체 포인터로 접근할 때는 ' -> ' 로 접근한다.
함수 포인터
함수 포인터는 함수의 주소를 저장하고, 해당 주소의 함수를 호출하는 데 사용하는 포인터
리턴타입(*함수_포인터)(함수 파라미터);
위 내용까지가 1일차 C언어에 대한 정리였습니다. 생각보다 정리할게 많네요.. 하하
'자격증' 카테고리의 다른 글
[5일차] 정보처리기사 실기 1장 요구사항 확인 (4) | 2024.10.04 |
---|---|
[4일차] 정보처리기사 실기 7장-SQL 응용 (4) | 2024.10.02 |
[3일차] 정보처리기사 실기 프로그래밍 언어 활용 - Python 언어 (0) | 2024.09.30 |
[2일차] 정보처리기사 실기 프로그래밍 언어 활용 - Java 언어 (1) | 2024.09.27 |