C 언어의 문법은 프로그래밍 언어의 기본 개념을 이해하는 데 중요한 역할을 합니다. C 언어는 비교적 단순한 문법 구조를 가지고 있지만, 포인터와 같은 고급 기능을 제공하여 복잡한 프로그램을 작성할 수 있도록 해줍니다. 아래에서는 C 언어의 주요 문법과 예제를 통해 C 언어가 어떻게 구성되어 있는지 설명하겠습니다.
C 언어의 기본 문법
1. 기본 구조
C 언어 프로그램은 함수들의 집합으로 구성되며, 모든 C 프로그램은 main
함수를 포함해야 합니다. main
함수는 프로그램의 진입점(Entry point)으로, 프로그램이 실행될 때 가장 먼저 호출됩니다.
#include <stdio.h>
int main() {
// C 프로그램의 시작점
printf("Hello, World!\n");
return 0;
}
#include <stdio.h>
: 표준 입력 및 출력 함수들을 포함하는 헤더 파일을 불러옵니다.int main()
: 프로그램의 시작 함수입니다.printf
: 화면에 문자열을 출력하는 함수입니다.return 0;
: 프로그램이 성공적으로 종료되었음을 운영 체제에 알립니다.
2. 데이터 타입
C 언어는 여러 가지 기본 데이터 타입을 제공합니다.
- 정수형 (Integer):
int
,short
,long
,long long
- 부호 없는 정수형 (Unsigned Integer):
unsigned int
,unsigned short
,unsigned long
- 실수형 (Floating-point):
float
,double
,long double
- 문자형 (Character):
char
#include <stdio.h>
int main() {
int integer = 10;
float decimal = 3.14;
char character = 'A';
printf("Integer: %d\n", integer);
printf("Decimal: %.2f\n", decimal);
printf("Character: %c\n", character);
return 0;
}
3. 변수와 상수
변수는 값을 저장할 수 있는 공간을 제공합니다. 상수는 변경할 수 없는 값을 나타냅니다.
#include <stdio.h>
int main() {
int variable = 5; // 변수
const float pi = 3.14159; // 상수
variable = 10; // 변수 값 변경 가능
// pi = 3.14; // 상수는 변경 불가 (컴파일 에러 발생)
printf("Variable: %d\n", variable);
printf("Constant: %.5f\n", pi);
return 0;
}
4. 연산자
C 언어는 다양한 연산자를 제공합니다.
- 산술 연산자:
+
,-
,*
,/
,%
- 증감 연산자:
++
,--
- 비교 연산자:
==
,!=
,<
,>
,<=
,>=
- 논리 연산자:
&&
,||
,!
- 비트 연산자:
&
,|
,^
,~
,<<
,>>
- 대입 연산자:
=
,+=
,-=
,*=
,/=
,%=
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);
a++;
printf("a++ = %d\n", a);
b--;
printf("b-- = %d\n", b);
return 0;
}
5. 조건문
조건문은 특정 조건에 따라 코드의 실행을 제어합니다.
- if 문: 조건이 참일 때만 블록을 실행합니다.
- else 문:
if
조건이 거짓일 때 블록을 실행합니다. - else if 문: 여러 조건을 순차적으로 검사합니다.
- switch 문: 여러 값에 따라 분기합니다.
#include <stdio.h>
int main() {
int number = 5;
// if-else 문
if (number > 0) {
printf("Positive number\n");
} else if (number < 0) {
printf("Negative number\n");
} else {
printf("Zero\n");
}
// switch 문
switch (number) {
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
printf("Other number\n");
break;
}
return 0;
}
6. 반복문
반복문은 특정 조건을 만족할 때까지 블록을 반복 실행합니다.
- for 문: 반복 횟수가 정해진 경우에 주로 사용됩니다.
- while 문: 조건이 참인 동안 블록을 실행합니다.
- do-while 문: 블록을 먼저 실행한 후 조건을 검사합니다.
#include <stdio.h>
int main() {
// for 문
for (int i = 0; i < 5; i++) {
printf("For Loop: %d\n", i);
}
// while 문
int j = 0;
while (j < 5) {
printf("While Loop: %d\n", j);
j++;
}
// do-while 문
int k = 0;
do {
printf("Do-While Loop: %d\n", k);
k++;
} while (k < 5);
return 0;
}
7. 배열
배열은 동일한 데이터 타입의 집합을 나타내며, 인덱스를 통해 요소에 접근할 수 있습니다.
#include <stdio.h>
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("Element %d: %d\n", i, numbers[i]);
}
return 0;
}
8. 포인터
포인터는 메모리 주소를 저장하는 변수입니다. 포인터는 고급 C 프로그래밍에서 중요한 역할을 합니다.
#include <stdio.h>
int main() {
int value = 42;
int *ptr = &value; // 포인터 변수 선언 및 초기화
printf("Value: %d\n", value);
printf("Address of value: %p\n", &value);
printf("Pointer: %p\n", ptr);
printf("Dereferenced Pointer: %d\n", *ptr);
return 0;
}
int *ptr
: 포인터 변수를 선언합니다.&value
: 변수의 메모리 주소를 가져옵니다.*ptr
: 포인터가 가리키는 주소의 값을 가져옵니다.
9. 함수
함수는 특정 작업을 수행하는 코드 블록입니다. C 언어에서는 사용자 정의 함수를 통해 코드를 모듈화할 수 있습니다.
#include <stdio.h>
// 함수 선언
int add(int a, int b);
int main() {
int sum = add(3, 4);
printf("Sum: %d\n", sum);
return 0;
}
// 함수 정의
int add(int a, int b) {
return a + b;
}
10. 구조체
구조체는 사용자 정의 데이터 타입으로, 여러 변수들을 하나의 복합 데이터 타입으로 묶을 수 있습니다.
#include <stdio.h>
// 구조체 정의
struct Point {
int x;
int y;
};
int main() {
struct Point p1;
p1.x = 10;
p1.y = 20;
printf("Point p1: (%d, %d)\n", p1.x, p1.y);
return 0;
}
struct Point
: 새로운 구조체 타입을 정의합니다.p1.x
: 구조체 멤버에 접근합니다.
결론
C 언어는 강력하고 유연한 프로그래밍 언어로, 저수준 시스템 프로그래밍부터 고수준 응용 프로그램 개발까지 다양한 분야에 사용됩니다. 위에서 소개한 C 언어의 문법 요소들을 이해하고 활용함으로써, C 언어를 사용하여 복잡하고 효율적인 프로그램을 작성할 수 있습니다. C 언어는 많은 현대 프로그래밍 언어에 영향을 미쳤으며, 컴퓨터 과학 및 소프트웨어 개발의 기초를 이해하는 데 중요한 역할을 합니다. 꾸준한 학습과 실습을 통해 C 언어의 다양한 기능을 익히고, 이를 통해 더 나은 소프트웨어 개발자가 될 수 있습니다.
'Software > C' 카테고리의 다른 글
C 시작하기 - OpenCV 활용 (0) | 2024.08.06 |
---|---|
C 시작하기 - OpenCV 소개 (0) | 2024.08.06 |
C 시작하기 - QT + MariaDB CRUD (0) | 2024.08.04 |
C 시작하기 - QT (0) | 2024.08.04 |
C언어 소개 (0) | 2024.07.29 |