← 목록으로 돌아가기

C언어

C 언어

함수, 메모리, 컴파일, 포인터 개념을 보안 탐지엔진 구현 관점에서 정리한 C 언어 학습 기록

C 언어는 시스템 가까이에서 동작하는 프로그램을 만들 때 중요하다.

웹 접근 제어 프로젝트에서는 C를 탐지엔진이나 패킷 처리 모듈처럼 빠르고 낮은 레벨의 처리가 필요한 부분에 사용할 수 있다.


C를 공부하는 이유

Python이나 Django는 웹 서비스와 데이터 처리에는 편하지만, 네트워크 패킷처럼 낮은 레벨의 데이터를 빠르게 다루는 데는 C가 더 적합할 수 있다.

프로젝트에서 C가 맡을 수 있는 역할:

  • 패킷 감지
  • 요청 정보 추출
  • URL 또는 IP 정보 전달
  • Python ML API 호출 전 데이터 정리
  • 빠른 탐지 모듈 구현

기본 구조

C 프로그램은 보통 main 함수에서 시작한다.

c
#include <stdio.h>

int main(void) {
    printf("hello\n");
    return 0;
}

컴파일 후 실행한다.

bash
gcc main.c -o main
./main

함수

함수는 반복되는 처리를 나누는 단위다.

c
int add(int a, int b) {
    return a + b;
}

공부 메모에서 function 관련 내용이 따로 정리되어 있었고, C에서는 함수 선언, 매개변수, 반환값을 정확히 이해하는 것이 중요하다.


포인터와 메모리

C에서 가장 중요한 개념은 포인터다.

포인터는 값 자체가 아니라 값이 저장된 메모리 주소를 다룬다.

c
int number = 10;
int *ptr = &number;

보안이나 네트워크 관련 코드를 다룰 때는 버퍼, 문자열, 메모리 주소를 안전하게 다루는 것이 중요하다.


문자열 처리

C의 문자열은 문자 배열이다.

c
char url[] = "http://example.com";

URL 탐지엔진을 만든다면 문자열에서 다음 정보를 뽑아낼 수 있어야 한다.

  • protocol
  • domain
  • path
  • query string
  • 특수문자 개수
  • 의심 키워드 포함 여부

프로젝트와 연결되는 부분

AI 웹접근제어 프로젝트에서 C는 전체 판단을 모두 담당하지 않아도 된다.

역할을 나누면 구조가 더 안정적이다.

text
C 탐지엔진
→ 요청 정보 추출
→ Python ML API로 전달
→ 예측 결과 수신
→ 차단 / 허용 처리

정리하면 C 공부의 목표는 문법 암기가 아니라 시스템 가까이에서 데이터를 안전하게 다루는 감각을 만드는 것이다.