1. 진수
- 진수 : 특정 개수의 숫자만을 이용하여 수를 나타내는 수 체계
- 진수 변환
- 10진수 -> n진수 : 10진수 값을 몫이 n보다 작을 때까지 n으로 나누고 나머지 값들을 읽기
- n진수 -> 10진수 : 마지막 자리부터 n^0, n^1, n^2... 를 곱한 후 합산
- 아스키 코드 : 미국 ANSI에서 표준화한 정보 교환용 부호체계
- 예시 : NULL(0), 48(0), 65('A'), 97('a')
1. C언어 기본
- C언어 기본 구조 : 전처리 부분과 본문으로 구성
- 전처리기 : 실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 전처리 지시문을 처리하는 작업
- 전처리기 종류
- #include : c언어 프로그램에 헤더 파일을 포함할 때 사용
- #define : 매크로를 정의할 때 사용. 상숫값을 지정
#include <stdio.h>
#define A 5
2. 자료형
- 자료형 : 프로그래밍 언어에서 실숫값, 정숫값과 같은 데이터를 식별하는 형태
- 자료형 유형
- 문자(char) : 문자 하나를 저장
- 정수(int) : 정숫값을 저장
- 부동 소수점(float, double) : 실숫값을 저장
- 자료형 변환 : 우선순위가 높은 자료형이 낮은 자료형으로 변환되면 자료 손실이 발생할 수 있다.
- 우선순위 : char<int<float<double
- 자동 형 변환(암시적 형 변환) : 데이터 형식을 자동으로 변환
- 강제 형 변환(명시적 형 변환) : 직접 형식 변환
int c = (int)5.5; //자료 손실 발생
3. 식별자
- 식별자 : 변수, 상수, 함수 등 서로 구분하기 위해 사용되는 이름
- 식별자 명명 규칙
- 사용 가능 문자 : 영문, 대문자/소문자, 숫자, 밑줄('_')
- 변수 사용 규칙 : 첫 자리 숫자, 중간 공백 x
- 변수 의미 부여 : 예약어 사용 x
- 식별자 표기법
- Camel Case : 첫 단어는 소문자로 표기하고, 이어진 각 단어의 첫글자는 대문자로 지정(inputFuntion)
- Pascal Case : 각 단어의 첫 글자는 대문자로 지정(InputFunction)
- Snake Case : 단어 사이에 언더바를 넣어 표시(input_function)
- Hungarian Case : 두어에 자료형을 붙이는 표기법(nScore)
4. 변수
- 변수 : 저장하고자 하는 값ㅅ을 주기억장치에 기억하기 위한 공간
- 변수 선언 : 초기화 하지 않는 경우 쓰레기값 저장
- 변수 유효범위
- 전역 변수 : 어떤 블록에도 속하지 않으며, 아무 곳에서 사용 가능
- 지역 변수 : 블록 내에서 선언하며, 해당 블록 내에서만 사용 가능
- static 변수 : 블록 내외부 상관없이 선언할 수 있으며, 프로그램 시작시 생성되고, 종료시 소멸
5. 표준 입출력 함수
- 표준 출력 함수(printf)
- 단순 출력 : 큰따옴표로 묶여있는 문자열 출력
- 이스케이프 문자를 이용한 출력 : \n, \t를 이용해 특수 기능 수행
- 포맷 스트링을 이용한 출력 : %c, %s, %d, %f 등을 이용해 변수,값, 수식 등을 출력
- 포맷 스트링을 이용한 상세 출력
- - : 왼쪽 정렬
- 0 : 전체 자릿수에서 앞에 빈공간 만큼 0으로 채움
- 전체자리수 : [전체자리수]만큼 공간 확보
- .소수점자리수 : [소수점자리수]만큼 소수점 출력
float a =1.234;
printf("%-05.1f\n", a); // 1.2 출력
- 표준 출력 함수(scanf) : printf와 동일한 포맷 스트링으로 키보드로 데이터 입력
- gets 함수 : 키보드로 입력받은 문자열을 문자형 배열에 저장
char a[10];
gets(a);
6. 연산자
- 연산자 : 프로그램 실행을 위해 연산을 표현하는 기호
- 연산자 종류
- 증감 연산자 : ++,--
- 산술 연산자 : +, -, *, /, %
- 시프트 연산자 : <<, >>
- 관계 연산자 : >, <, >=, <=, ==, !=
- 비트 연산자 : &, |, ^, ~
- 논리 연산자 : &&, ||, !
- 삼항 연산자 : (조건식)? (참):(거짓)
- 대입 연산자 : =, +=, -=, *=, /=, %=
- 연산자 우선 순위 : 괄호 -> 단항 연산자(증감 -> 논리 -> 비트) -> 산술 -> 시프트 -> 관계 -> 삼항 -> 대입
7. 조건문
- if문 : if(조건문) ~ else if(조건문) ~ else
- switch문 : switch(식) { case 값: break; ~ default: ~}
8. 반복문
- 반복문 종류 : while문, do~while문, for문
- 루프 제어 명령어 : break문, continue문
9. 배열
- 배열 : 같은 자료형의 변수들로 이루어진 집합
- 배열 종류 : 1차원, 2차원 배열
int a[3] = {1,2}; // 나머지 값은 0으로 초기화
int b[2][3]; // 초기값을 선언하지 않으면 쓰레기값으로 초기화
10. 문자열
- 배열과 문자열 : C언어에서 문자열은 char 형 배열로 표현. 여러 문자열을 정의할 때는 2차원 배욜 사용
11. 구조체
- 구조체 : 사용자가 기본 자료형을 가지고 새롭게 정의할 수 있는 사용자 정의 자료형
- 구조체 선언 :
struct Stuent{
char gender;
int age;
}
struct student s = {'F', 20}; // 구조체 멤버 선언 순서대로 초기화
- typeof 연산 : 기존 자료형에 새롭게 별칭을 부여
12. 공용체
- 공용체(Union) : 모든 멤버 벼누가 하나의 메모리 공간을 공유하는 사용자 정의 자료형
union Student{
int id;
int age;
};
uniton Student s = {.age=20};
13. 함수
- main 함수 : 프로그램이 실행하는 모든 프로그램의 시작점
void main(){
return;
}
- 사용자 정의 함수 : 사용자가 직접 새로운 함수를 정의하여 사용. 매개변수나 생성된 변수는 사용자 정의 함수가 종료되면 삭제
- 매개변수 전달 방법 : 함수가 필요로 하는 값을 매개변수로 만들어 함수에게 전달
- Call by Value : 변수의 값을 넘겨주고, 이 값은 새로운 공간에 할당. 실 매개변수에 영향 x
- Call by Reference : 변수가 사용 중인 메모리 공가늬 주소를 넘겨주는 방식
- 재귀 함수 : 함수 자신이 자신을 부르는 함수
- 문자열 함수
- strcat : 문자열끼리 연결
- strcpy : 문자열 복사
- strcmp : 문자열 비교 함수(ASCII 코드 비교)
- strlen : 문자열 길이
- strrev : 문자열을 거꾸로 뒤집는 함수
- strchr : 문자열 내에 일치하는 문자가 있는지 검사
- 수학 함수
- sqrt : 제곱근 계산
- ceil : 소수점 올림
- floor : 소수점 내림 함수
- 유틸리티 함수
- rand : 임의의 값 생성
- srand : 난수 생성 알고리즘에 seed를 정해주는 함수
- time : 현재 시간 반환
- atoi : 문자열을 정수형으로 변환하
- atof : 문자열을 실수형으로 변환
- itoa : 정수형을 문자열로 변환
- 문자 관리 함수
- isalpha : 영문자인지 판단
- isupper : 대문자인지 판단
- islower : 소문자인지 판단
- isdigit : 숫자인지 판단
- isxdigit : 16진수에 포함되는 숫자인지 판단
- isalnum : 영문자 또는 숫자인지 판단
- tolower : 소문자로 변환하는 함수
- toupper : 대문자로 변환하는 함수
14. 포인터
- 포인터 : 변수의 주솟값을 저장하는 공간
- 포인터 선언
int a = 10;
int* b = &a; // *는 주소에 해당하는 변수 값, &는 주소값
printf("%d %d %d", a *b *(&a)); // 10 10 10 (*과 &은 상쇄)
- 배열과 포인터 : 배열에서 배열명만 단독으로 사용할 경우 1차원 포인터와 동일
- 구조체와 포인터 : 일반 구조체 변수로 접군할 때는 .으로, 구조체 포인터로 접근할 때는 ->로 접근
- 함수 포인터 : 함수의 주소를 저장하고, 해당 주소의 함수를 호출
15. 상수
- 상수 : 프로그램 내에서 변경되지 않는 값
- 상수 선언
const int a= 10; // 자료형 앞이나 뒤에 키워드 붙이기
- 포인터와 const
const int *a = arr; // 포인터가 가라키는 대상의 값을 변경하지 못하도록 제한
int const *b = arr; // "
int* const c = arr; // 포인터가 다른 주소를 가리키지 못하도록 제한
16. 메모리 할당/해제
- 메모리 동적 할당 : 프로그램이 실행 중에 메모리 공간을 할당
- 메모리 해제 : 실행 중에 할당된 메모리 공간을 해제
char tmp[10];
char *a;
scanf("%s", tmp);
a = (char*)malloc(sizeof(char)*strlen(tmp)+1)); // 강제 형 변환을 통해 메모리 할당
free(a); // 메모리 해제
# 회고
C언어 끝!
포인터가 굉장히 헷갈린다. 나머지는 뭐...
'개인 스터디 > 정리' 카테고리의 다른 글
[정보처리기사 실기] 13. Python (0) | 2025.05.01 |
---|---|
[정보처리기사 실기] 12. 자바 (0) | 2025.04.30 |
[정보처리기사 실기] 9. 인터페이스 기능 구현 (1) | 2025.04.15 |
[정보처리기사 실기] 8. 내외부 연계 모듈 구현 (0) | 2025.04.14 |
[정보처리기사 실기] 7. 연계 매커니즘 구성 (0) | 2025.04.13 |