[VEDA] 1일차 - 혼공C

나우히즈·2025년 3월 17일

VEDA

목록 보기
1/16

C 프로그래밍 요점 정리

1. C 언어 개요

  • 유닉스 운영체제 개발을 위해 설계됨 → 시스템 구현에 최적화
  • 여전히 높은 언어 순위를 유지
  • 시스템, 하드웨어 제어 및 임베디드 개발에 필수
  • C의 기초 부분은 빠르게 스킵 가능
  • 기술 독점 금지, 적극적인 질문과 토론 필요

2. 개발 환경 및 보안

  • Windows: Visual Studio 사용하여 컴파일
  • 보안 이슈: gets()는 버퍼 오버플로우 취약 → 사용 금지
  • Linux 개발 목표: 보안 경고 끄고 개발

3. 컴파일 과정 및 스타트업 코드

  • 컴파일 과정 3단계: 전처리 → 컴파일 → 링크
  • 스타트업 코드: main() 실행 전 필수 설정 수행

기본 문법 및 자료형

1. 데이터 타입 및 변수

  • 정수형: char (1B), short (2B), int (4B), long (4B), long long (8B)
  • 실수형: 기본 double (8B), float 사용 시 f 접미사 필요
  • 정수형 상수: 기본적으로 4B, 실수형은 8B (double)
  • 문자형: char 단일 문자, char[] 문자열 (널 문자 \0 포함)
  • 메모리:
    • 프로그램은 실행 시 메모리에 적재됨
    • long 크기는 플랫폼에 따라 다름
    • CPU는 4B~16B 단위로 메모리 읽기 최적화

2. 상수 및 출력

  • const 키워드: 변경 불가능한 변수 (상수) 선언
  • printf() 포맷 지정자:
    • %d (정수), %u (부호 없는 정수), %f (float), %lf (double)
    • \n, \t 등 제어 문자 활용

3. 진법 변환 및 비트 연산

  • 진법 변환: 2진법 ↔ 16진법 변환 연습
    • 16진수: 0x 접두사 사용
    • 2진수 변환 예: 12 → 0x0C → 0b1100
  • 비트 연산:
    • & (비트 AND), | (비트 OR), ^ (비트 XOR), ~ (비트 NOT)
    • << (왼쪽 시프트), >> (오른쪽 시프트)

입출력 및 문자열 처리

1. 표준 입력 (scanf)

  • 포맷 지정자를 활용하여 입력 받음
  • 정수 입력: scanf("%d", &변수);
  • 문자열 입력:
    • scanf("%s", 변수); → 공백 이후 입력 불가
    • gets(변수); → 개행(\n) 기준 입력 (취약점 있음)
    • 보안 강화: fgets(변수, 크기, stdin); 사용 추천

2. 문자열 처리 (<string.h>)

  • 문자열 대입 불가능:
    char str[6];
    str = "hello";  // (X) 직접 대입 불가능
  • strcpy(dest, src); 함수 사용
  • 문자열 비교: strcmp(str1, str2)

연산자

1. 연산자 종류

  • 산술 연산자: +, -, *, /, %
  • 증감 연산자: ++a (전위 증가), a++ (후위 증가)
  • 관계 연산자: ==, !=, >, <, >=, <=
  • 논리 연산자: &&, ||, !
  • 비트 연산자: &, |, ^, ~, <<, >>
  • 형 변환 연산자: (자료형) 값

2. 연산자 우선순위

  • 단항 연산자 > 산술 연산자 > 관계 연산자 > 논리 연산자
  • 콤마 연산자 (res = (++a, ++b);): 마지막 값이 결과

3. 삼항 연산자

  • (조건) ? 참값 : 거짓값;

제어문

1. 조건문 (if-else, switch-case)

  • if 조건문:
    if (조건) { 실행문; } 
    else { 실행문; }
  • switch-case:
    switch (변수) {
        case1: 실행문; break;
        case2: 실행문; break;
        default: 실행문;
    }

2. 반복문 (for, while, do-while)

  • for 문:
    for (초기식; 조건식; 증감식) { 실행문; }
  • while 문:
    while (조건) { 실행문; }
  • do-while 문 (최소 1회 실행):
    do { 실행문; } while (조건);

3. 중첩 반복문 및 break 활용

  • 특정 조건 만족 시 break로 반복 종료
  • continue는 다음 반복 실행

5개의 댓글

comment-user-thumbnail
2025년 9월 26일

안녕하세요!
VEDA 3기 지원생입니다!

혹시 veda에 대해서 궁금한게 있는게
가능하시다면 질문드려도 괜찮으실까요?

1개의 답글