C언어의 구조
1. 함수 기반 언어: 모든 C 프로그램은 main함수에매크서 프로그램이 실행됩니다.
#include <stdio.h>
int main(void){
int a = 10;
int b = 20;
printf("%d", a+b);
return 0;
}
main함수는 프로그램의 진입점으로 여기서 실행이 됩니다.
2. 매크로
매크로 함수: 매크로는 코드의 반복을 줄이고, 함수처럼 사용할 수 있다.
#define SQUARE(x) ((x) * (x)) //매크로 함수 정의
int main() {
int a = 5;
int result = SQUARE(a);
printf("Square of %d is %d\n", a, result);
return 0;
}
여기서 SQUARE(X)는 매크로 함수이고 x값을 받아 (x)*(x)를 계산합니다
매크로 상수: 상수 값을 매크로로 지정합니다
#define PI 3.14 //매크로 상수 정의
int main() {
float radius = 5.0;
float area = PI * radius * radius;
printf("Area of circle: %.2f\n", area);
return 0;
}
PI는 매크로 상수로 어디서나 사용할 수 있는 값을 제공합니다
3. 인라인 함수
인라인 함수 : 함수 호출시 오버헤드를 줄이기 위해 함수 본문을 호출 위치에 삽입하는 방식
inline int add(int a, int b) { //인라인 함수 정의
return a + b;
}
int main() {
int result = add(3, 4); //인라인 함수 호출
printf("Sum: %d\n", result);
return 0;
}
inline 키워드를 사용하면 함수 호출 시 해당 함수의 코드가 호출 위치에 직접 삽입되어 실행됩니다
4. 정적 함수
정적함수 : 함수가 선언된 파일 내에서만 사용 가능
static void printMessage() { //정적 함수 정의
printf("This is a static function.\n");
}
int main() {
printMessage(); //동일 파일이라서 호출 가능
return 0;
}
static 키워드를 사용한 함수는 그 함수가 정의된 파일 내에서만 접근할 수 있고 다른 파일에서는 호출할 수 없습니다.
5. 인코딩
인코딩은 데이터를 컴퓨터에서 처리할 수 있는 형식으로 변환하는 과정
문자열을 ASCII 또는 UTF-8 형식으로 인코딩할 수 있고 C에서 문자열을 처리할 때 char 배열을 사용합니다
#include <stdio.h>
int main() {
char str[] = "Hello, World!"; //ASCII 인코딩 문자열
printf("%s\n", str); //출력
return 0;
}
문자열은 내부적으로 바이트 형태로 저장되며, 해당 문자열이 어떤 인코딩 방식으로 저장되는지에 따라 데이터 처리 방식이 달라집니다.
6. 매개변수
함수가 호출될떄 전달 받는 값
int add(int a, int b) { //매개변수 = a, b
return a + b;
}
int main() {
int result = add(3, 4); //3, 4는 매개변수로 전달
printf("Sum: %d\n", result);
return 0;
}
함수 add()는 a와 b라는 매개변수를 받아 덧셈을 수행하고 main() 함수에서 이 값을 전달합니다
7. 토큰
토큰은 소스 코드에서 의미 있는 단위로, 키워드, 변수명, 숫자, 연산자 등이 포함
int sum = 5 + 3; //int, sum, =, 5, +, 3은 각각 토큰임
8. 스코프 (Scope)
지역변수 (Local Variable): 함수 내에서 선언된 변수로, 해당 함수 내에서만 사용 가능합니다.
void test() {
int localVar = 10; //지역변수
printf("%d\n", localVar);
}
전역변수 (Global Variable): 함수 외부에서 선언된 변수로, 프로그램 내 모든 함수에서 사용 가능합니다
int globalVar = 20; // 전역변수
void test() {
printf("%d\n", globalVar); //전역변수 사용
}
int main() {
test();
return 0;
}
여기서 globalVar는 전역변수이고 프로그램 내 모든 함수에서 접근 가능
localVar는 test() 함수 내에서만 유효한 지역변수임
'C언어 > 시큐어코딩' 카테고리의 다른 글
[PRE00-C] ~ [PRE10-C] (0) | 2025.03.13 |
---|---|
매크로 함수 VS 인라인 함수 (0) | 2025.03.13 |