컴퓨터 언어는 숨겨진 의미나, 뉘앙스, 문법의 변화 등이 없습니다. 최고야!
이 글은 C언어를 배우기 전에 무엇을 배우는지를 적어 놓은 글입니다.
프리뷰쯔음 되는 글이기 때문에 가볍게 읽어주시면 감사하겠습니다.
모든걸 학습하고 다시 읽으시면 ㅇㅎ! 하실 겁니다.
1. c언어의 기본구조
C언어는 간결하면서도 강력한 프로그래밍 언어입니다. 기본 골격은 아래와 같습니다.
#include <stdio.h>
int main() {
// 프로그램 코드
return 0;
}
이제 이 구조를 자세히 살펴보겠습니다.
1. include <stdio.h>: studio.h라는 명령어 모음 파일을 포함한다(include)는 말입니다.
2. int : 데이터 타입으로 모든 함수는 데이터 타입을 가집니다. 함수을 활동을 위한 공간 배치라고 생각 할 수도 있습니다.
3. main() : 여기가 파일이 시작되는 지점이라는 뜻입니다.
4. {} 중괄호 : 함수의 시작과 끝을 의미합니다.
5. return 0 : 함수의 실행을 종료하고 값을 반환, main함수에서 0를 반환하는 것은 프로그램이 정상적으로 종료되었다는 의미입니다.
2. 주석
C언어에서는 주석을 사용할 수 있습니다.
주석은 컴퓨터는 처리하지 않고, 코딩하는 프로그래머들이 코드를 이해하는데 도움을 줍니다.
한 줄 주석: // 이후의 내용은 주석 처리됩니다.
여러 줄 주석: /*와 */ 사이의 모든 내용이 주석 처리됩니다.
// 이것은 한 줄 주석입니다.
/*
이것은
여러 줄
주석입니다.
*/
3. 세미콜론
C언어에서 대부분의 문장은 세미콜론(;)으로 끝납니다. 세미콜론은 한 문장의 끝을 나타내는 구분자 역할을 합니다.]
세미콜론을 빼먹으면 컴파일 오류가 발생할 수 있으므로 주의해야 합니다.
int x = 5;
printf("Hello, World!\n);
4.식별자
식별자는 변수,함수, 구조체 등의 이름을 지정할 때 사용합니다. C언어의 식별자 규칙은 다음과 같습니다.
1) 영문자, 숫자, 언더바(_)만 사용 가능
2) 첫 글자는 반드시 영문자나 언더바(_)로 시작합니다.
3) 이름에 대소문자를 구분합니다.
4) 예약어(C언어에 자체적으로 들어가 있는 명령어)는 사용할 수 없습니다.
int count; // 올바른 식별자
int _value; // 올바른 식별자
int 1stNumber; // 잘못된 식별자 (숫자로 시작)
int for; // 잘못된 식별자 (예약어 사용)
5. 키워드(예약어)
C언어에는 특별한 의미를 가진 예약어들이 있습니다.
이들은 식별자로 사용할 수 없습니다. 주요 키워드들은 다음과 같습니다:
auto break case char const continue
default do double else enum extern
float for goto if int long
register return short signed sizeof static
struct switch typedef union unsigned void
volatile while
6. 데이터 타입(자료형)
프로그램은 숫자, 문자와 같은 데이터를 위한 방(자료형)을 일단 만들고 방 안에 데이터를 채우는 방식을 이용합니다.
그래서 우리는 방을 먼저 만들고 그 방을 이용해서 계산을 하거나 새롭게 저장하기도합니다.
방이 너무 크면 용량이 너무 커지고, 너무 작으면 데이터 처리에 오류가 발생하게 됩니다.
자료형들은 다음과 같습니다.
| 자료형 | 바이트 | 범위 | 사용예 | ||
| 정수형 | 부호있음 | short | 2 | -32768~32767 | short s = 32767; |
| int | 4 | -2,147,483,648 ~ 2,147,483,647 | int i = 2147483647; | ||
| long | 4 | -2,147,483,648 ~ 2,147,483,647 | long l = 9223372036854775807; | ||
| long long | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 9223372036854775807LL; | ||
| 부호없음 | unsigned short | 2 | 0 ~ 65,535 | unsigned short us = 65535; | |
| unsigned int | 4 | 0 ~ 4,294,967,295 | unsigned int ui = 4294967295; | ||
| unsigned long | 4 | 0 ~ 4,294,967,295 | unsigned long ul = 18446744073709551615U; | ||
| unsigned long long | 8 | 0 ~ 18,446,744,073,709,551,615 | 18446744073709551615ULL; | ||
| 문자형 | 부호있음 | char | 1 | -128 ~ 127 | char c = 'A'; |
| 부호없음 | unsigned char | 1 | 0 ~ 255 | unsigned char uc = 255; | |
| 부동소수점형 | float | 4 | ±3.4 × 10^-38 ~ ±3.4 × 10^38 | float num1 = 3.14f; | |
| double | 8 | ±1.7 × 10^-308 ~ ±1.7 × 10^308 | double num1 = 3.141592653589793; | ||
7. 변수 선언과 초기화
변수는 사용하기 전에 반드시 선언해야 합니다.
변수 선언의 기본 형식은 아래와 같습니다.
// 데이터타입 변수명;
int age;
float weight;
char grade;
// 변수를 선언함과 동시에 초기값을 지정할 수 있습니다.
// (초기값이라고 하지만, 해당 변수가 시작할 때의 시작값이라고 생각하면 좋습니다.)
int age = 25;
float weight = 68.5;
char grade = 'A';
8. 상수
상수는 프로그램 실행 중 값이 변하지 않는 데이터입니다. C언어에서 상수를 정의하는 방법은 두 가지가 있습니다:
// #define 전처리기 지시문 사용
#define PI 3.14159
// const 키워드 사용
const double PI = 3.14159;
9. 연산자
c언어의 연산을 위해 사용하는 기호들입니다.
| 산술 연산자 | +, -, *, /, % | 대입 연산자 | =, +=, -=, *=, /=, %= |
| 관계 연산자 | ==, !=, <, >, <=, >= | 증감 연산자 | ++, -- |
| 논리 연산자 | &&, ||, ! | 조건 연산자 | ?: |
| 비트 연산자 | &, |, ^, ~, <<, >> |
10. 제어문
프로그램의 실행 흐름을 제어하는 명령문입니다.
1) if-else 문
if (조건) {
// 조건이 참일 때 실행
} else {
// 조건이 거짓일 때 실행
}
2) switch 문
switch (표현식) {
case 값1:
// 코드
break;
case 값2:
// 코드
break;
default:
// 기본 코드
}
3) for 반복문:
for (초기화; 조건; 증감) {
// 반복 실행될 코드
}
4) while 반복문
while (조건) {
// 조건이 참인 동안 반복 실행될 코드
}
5) do-while 반복문
do {
// 최소 한 번은 실행되는 코드
} while (조건);
11. 함수
특정 작업을 수행하는 코드의 묶음입니다.
함수의 기존 구조는 아래와 같습니다.
반환타입 함수이름(매개변수 목록) {
// 함수 본문
return 반환값;
}
//예시
int add(int a, int b) {
return a + b;
}
12. 배열
배열은 같은 타입의 변수들을 모아놓은 집합입니다.
데이터타입 배열이름[크기];
//예시
int numbers[5]; // 5개의 정수를 저장할 수 있는 배열
//배열의 초기화
int numbers[5] = {0, 1, 2, 3, 4};
13. 포인터
포인터는 메모리 주소를 저장하는 변수입니다.
데이터타입 *포인터이름;
//예시
int *ptr;
int x = 10;
ptr = &x; // x의 주소를 ptr에 저장
14. 구조체
구조체는 서로 다른 데이터 타입을 하나로 묶어 새로운 데이터 타입을 정의합니다.
struct 구조체이름 {
멤버변수1;
멤버변수2;
// ...
};
//예시
struct Person {
char name[50];
int age;
float height;
};
15. 입출력 함수
C언어의 기본적인 입출력 함수는 stdio.h 헤더 파일에 정의되어 있습니다.
//출력함수
printf("Hello, %s!\n", name);
//입력함수
scanf("%d", &age);
16. 메모리 할당
C언어에서는 동적으로 메모리를 할당하고 해제할 수 있습니다.
// malloc(): 메모리 할당
int *ptr = (int *)malloc(sizeof(int) * 5);
// free(): 할당된 메모리 해제
free(ptr);
17. 파일처리
- fopen(): 파일 열기
- fclose(): 파일 닫기
- fprintf(): 파일에 형식화된 데이터 쓰기
- fscanf(): 파일에서 형식화된 데이터 읽기
//예시
FILE *file = fopen("example.txt", "w");
fprintf(file, "Hello, World!\n");
fclose(file);
18. 전처리기 지시문
전처리기 지시문은 컴파일 전에 처리되는 특별한 명령어입니다.
- #include: 헤더 파일 포함
- #define: 매크로 정의
- #ifdef, #ifndef, #endif: 조건부 컴파일
//예시
#include <stdio.h>
#define MAX 100
#ifdef DEBUG
// 디버그 모드에서만 컴파일되는 코드
#endif