역순 정렬
- 파라미터(parameter): 함수를 정의할 때, 함수가 필요로 하는 값을 나타내는 변수의 이름입니다. 파라미터는 함수의 괄호 안에 선언되며, 함수 내부에서 사용됩니다. 파라미터는 함수에 전달되는 아규먼트(argument) 값을 받아들이는 역할을 합니다.
- 아규먼트(argument): 함수를 호출할 때, 함수에 전달되는 실제 값입니다. 호출하는 쪽에서 함수에 전달하는 데이터를 아규먼트라고 합니다. 함수 호출 시, 아규먼트는 함수의 파라미터에 대입되어 함수 내부에서 사용됩니다.
- 리턴 값(return value): 함수가 실행을 마친 후, 호출한 쪽으로 반환하는 값입니다. 함수의 결과물이라고 생각할 수 있습니다. 함수 내부에서 계산된 값을 반환하거나, 다른 처리를 통해 얻은 값을 반환할 수 있습니다. 리턴 값은 함수 호출 결과로 사용되거나, 다른 변수에 저장되어 사용될 수 있습니다.
함수사용
- 구조적인 프로그래밍 방식

항상 main으로 시작하진 않는다

한 프로젝트에 여러 파일 생성시 프로젝트에서 제외를 해야 실행 가능 (main 중복시)
- 제외 후 복구 (소스파일 > 추가 > 기존 항목)

return 0; 후에 프로그램 종료
return 0; 위에 프로그램 하기
return 0;은 C 프로그램에서 main 함수의 반환 값으로 사용되는 관례적인 표현입니다. main 함수가 종료될 때 반환하는 값으로, 0은 일반적으로 프로그램이 성공적으로 종료되었음을 나타냅니다.
C 프로그램에서 main 함수의 반환 값은 운영 체제 또는 다른 프로그램이 현재 프로그램의 실행 결과를 확인하는 데 사용될 수 있습니다. 반환 값을 통해 실행 중인 프로그램이 정상적으로 동작했는지, 오류가 발생했는지 등을 확인할 수 있습니다.
일반적으로 0은 성공을 나타내는 값으로 사용되며, 비정상적인 종료 또는 오류 발생 시에는 0이 아닌 다른 값을 반환할 수도 있습니다. 이는 프로그래머가 원하는 방식으로 반환 값을 설정할 수 있는 유연성을 제공합니다.
따라서, return 0;은 프로그램이 성공적으로 종료되었음을 나타내기 위해 사용되는 관례적인 표현입니다.
자주 사용하는 함수
C 언어에서 가장 자주 사용되는 함수들을 일반적인 순서로 알려드리겠습니다:
1. `printf`: 출력을 위한 함수로, 화면에 텍스트를 출력합니다.
2. `scanf`: 사용자의 입력을 받기 위한 함수로, 키보드로부터 데이터를 입력받습니다.
3. `malloc`/`free`: 동적 메모리 할당과 해제를 위한 함수로, 필요에 따라 메모리를 동적으로 할당하고 해제합니다.
4. `strcpy`/`strcat`/`strlen`: 문자열 처리를 위한 함수로, 문자열을 복사하거나 연결하고, 문자열의 길이를 계산합니다.
5. `strcmp`/`strncmp`: 문자열 비교를 위한 함수로, 두 문자열을 비교하여 동일 여부를 확인합니다.
6. `memcpy`/`memmove`: 메모리 복사를 위한 함수로, 메모리 영역을 복사하거나 이동합니다.
7. `atoi`/`atof`: 문자열을 정수나 실수로 변환하는 함수로, 문자열을 숫자로 변환합니다.
8. `rand`/`srand`: 난수 생성을 위한 함수로, 임의의 난수를 생성하거나 시드 값을 설정합니다.
9. `fopen`/`fclose`/`fread`/`fwrite`: 파일 입출력을 위한 함수로, 파일을 열고 닫으며, 데이터를 읽거나 쓸 수 있습니다.
10. `malloc`/`calloc`/`realloc`: 동적 메모리 할당을 위한 함수로, 메모리를 동적으로 할당하고 해제합니다.
이는 일반적으로 자주 사용되는 함수들의 순서이지만, 실제로 사용되는 함수의 순서는 프로그램의 목적과 구조에 따라 다를 수 있습니다. 따라서, 개별 프로그램의 요구사항에 따라 함수 사용 순서가 달라질 수 있습니다.
랜덤값 발생 코드
많이쓰는 예약어
- int: 정수형 변수를 선언할 때 사용되는 예약어입니다.
- char: 문자형 변수를 선언할 때 사용되는 예약어입니다.
- float / double: 실수형 변수를 선언할 때 사용되는 예약어입니다. float은 단정밀도 실수, double은 배정밀도 실수를 표현합니다.
- void: 함수의 반환형이 없음을 나타내는 예약어입니다.
- if / else: 조건문을 작성할 때 사용되는 예약어입니다. if는 조건이 참일 때 실행되는 블록을 정의하고, else는 조건이 거짓일 때 실행되는 블록을 정의합니다.
- for: 반복문을 작성할 때 사용되는 예약어입니다. 정해진 횟수만큼 반복 실행됩니다.
- while / do-while: 반복문을 작성할 때 사용되는 예약어입니다. while은 조건을 체크한 후 반복 실행되고, do-while은 먼저 실행한 후 조건을 체크합니다.
- switch / case / break: 다중 조건문을 작성할 때 사용되는 예약어입니다. switch는 선택할 값을 지정하고, case는 해당 값과 일치하는 경우 실행되는 블록을 정의합니다. break는 switch 문을 빠져나올 때 사용됩니다.
- return: 함수에서 값을 반환할 때 사용되는 예약어입니다.
- typedef: 새로운 자료형을 정의할 때 사용되는 예약어입니다.
- struct: 구조체를 정의할 때 사용되는 예약어입니다.
- enum: 열거형을 정의할 때 사용되는 예약어입니다.
- sizeof: 변수나 자료형의 크기를 반환하는 예약어입니다.
- const: 변수를 상수로 선언할 때 사용되는 예약어입니다.
- static: 지역 변수의 지속성을 제어할 때 사용되는 예약어입니다.
자주 사용하는 구두점
- ; (세미콜론): 문장의 끝을 나타내는 구두점입니다. 문장이 끝나면 세미콜론을 붙여야 합니다.
- , (쉼표): 변수나 상수를 구분할 때 사용되는 구두점입니다. 여러 개의 변수 또는 상수를 동시에 선언하거나 함수의 인자를 구분할 때 주로 사용됩니다.
- . (점): 구조체나 구조체 포인터를 사용할 때 멤버에 접근하기 위해 사용되는 구두점입니다.
- -> (화살표 연산자): 구조체 포인터를 사용할 때 포인터가 가리키는 구조체의 멤버에 접근하기 위해 사용되는 구두점입니다.
- : (콜론): case 문에서 해당 조건과 일치하는 경우 실행되는 블록을 정의할 때 사용되는 구두점입니다.
- () (괄호): 함수나 함수 포인터를 호출할 때 인자를 전달하거나 그룹화할 때 사용되는 구두점입니다.
- [] (대괄호): 배열을 선언하거나 배열 요소에 접근할 때 사용되는 구두점입니다.
- {} (중괄호): 코드 블록을 정의할 때 사용되는 구두점입니다. 함수, 조건문, 반복문 등의 블록을 중괄호로 감싸서 구성합니다.
- () (소괄호): 수식의 연산자 우선순위를 명시하거나 표현식을 그룹화할 때 사용되는 구두점입니다.
- /* */ (주석): 프로그램의 설명이나 코드의 일부를 주석 처리할 때 사용되는 구두점입니다. 주석은 컴파일러에 의해 무시됩니다.

정렬 단축키
-Ctrl + k + f
주석 단축키
-Ctrl + k + c, Ctrl + k + u ( 해제 )

이스케이프 시퀀스
- 역슬래시 (\)와 영문자, 특수문자로 이루어진 문자조합

- 변수(Variable): 정보를 저장하기 위한 공간으로, 값을 변경하거나 참조할 수 있습니다.
- 전처리기(Preprocessor): 소스 코드를 컴파일하기 전에 처리하는 단계로, #으로 시작하는 명령어를 사용하여 작업을 수행합니다.
- 입출력 라이브러리 함수(Input/Output Library Functions): 사용자로부터 입력을 받거나, 결과를 출력하기 위해 제공되는 함수들입니다.
- 연산자(Operator): 값을 조작하거나 비교하기 위해 사용되는 기호나 키워드입니다.
- 제어문(Control Statements): 프로그램의 흐름을 제어하기 위해 사용되는 구문으로, 조건에 따라 실행 여부를 결정하거나 반복 작업을 수행할 수 있습니다.
- 함수 선언(Function Declaration): 함수의 이름, 반환 값의 자료형, 매개 변수의 자료형 등을 명시하여 함수를 선언하는 것입니다.
- 기억 클래스(Storage Classes): 변수의 수명과 범위를 제어하기 위해 사용되는 키워드로, 변수의 메모리 할당과 해제를 조절합니다.
- 배열(Array): 동일한 자료형의 여러 값을 하나의 변수로 관리하는 데이터 구조입니다.
- 구조체(Structure): 서로 다른 자료형의 데이터를 하나로 묶어서 관리하기 위해 사용되는 사용자 정의 자료형입니다.
- 포인터(Pointer): 메모리 주소를 저장하는 변수로, 다른 변수의 주소를 가리키거나 동적 메모리 할당을 위해 사용됩니다.
- call by address: 함수 호출 시, 인수로 변수의 주소를 전달하여 변수의 값이 직접 변경되도록 하는 방식입니다.