본문 바로가기

분류 전체보기76

[C] 매크로(macro) 함수, 조건부 컴파일 매크로(macro)C 언어에서 전처리기(preprocessor)가 처리하는 기능으로, 프로그램 실행 전에 텍스트 치환으로 동작.C 언어에서는 #define 선행처리 지시문에 인수로 함수의 정의를 전달하여, 함수처럼 동작하는 매크로를 만들 수 있다. 매크로를 사용하면 코드의 재사용성과 가독성을 높이고, 반복적인 작업을 간단하게 처리할 수 있다. 매크로 함수의 장단점 👍 장점1. 매크로 함수는 단순 치환만 해주므로, 인수의 타입을 신경쓰지 않는다.2. 매크로 함수를 사용하면, 여러 개의 명령문을 동시에 포함할 수 있다.3. 함수 호출에 의한 성능 저하가 일어나지 않으므로, 프로그램 실행 속도가 향상된다. (함수 호출과 달리, 런타임에 호출 비용이 없으므로) 👎 단점1. 매크로는 단순 텍스트 치환이므로 연.. 2025. 1. 13.
[C] 함수 포인터 함수포인터반환형 (*포인터이름)(매개변수 목록);- 다른 함수의 주소를 저장할 수 있는 포인터 - 함수 포인터와 저장될 함수의 반환값 자료형, 매개변수 자료형과 개수가 일치해야 한다.   예시#include #include uint8_t addOne(uint8_t value) { return value + 1;}int main() { typedef uint8_t (*FP_uint8_t_uint8_t)(uint8_t); FP_uint8_t_uint8_t myFunctionPointer = addOne; uint8_t result = myFunctionPointer(5); printf("Result: %u\n", result); return 0;}  (연습) 사칙연산 실습.. 2025. 1. 13.
[C] 공용체(union), 열거체(enum) 공용체(Union)모든 멤버 변수가 하나의 메모리 공간을 공유한다.위의 한 가지 점만 제외한 모든면에서 구조체와 같음.모든 멤버 변수가 같은 메모리를 공유하므로, 공용체는 한 번에 하나의 멤버 변수만 사용 가능하다. 순서가 규칙적이지 않고, 미리 알 수 없는 다양한 타입의 데이터를 저장할 수 있도록 설계된 타입.   공용체와 구조체의 차이점구조체(Struct)공용체(Union)각 멤버가 독립적인 메모리 공간을 가짐모든 멤버가 하나의 메모리 공간을 공유구조체의 크기는 모든 멤버의 크기의 합공용체의 크기는 가장 큰 멤버의 크기동시에 여러 멤버에 값 저장 가능한 번에 하나의 멤버만 유효한 값을 저장   예시#include union Data { // Union 정의 char c; // 1byte i.. 2025. 1. 13.
[C] 지역변수(local), 전역변수(global), 정적변수(static) C 언어에서 정적 변수, 지역 변수, 전역 변수는 변수의 선언 위치와 저장 클래스(storage class)에 따라 구분되며, 각각의 생명 주기, 유효 범위, 초기화 방식 등이 다르다.  1. 지역 변수 (Local Variable)함수 안에서만 접근이 가능하며, 함수를 벗어나면 변수의 메모리 공간이 소멸된다. 정의: 함수나 블록 내부에서 선언된 변수.저장 위치: 함수 호출 시 스택 메모리에 저장됨.생명 주기:함수 또는 블록이 실행될 때 생성되고, 실행이 끝나면 소멸됨.매번 새로 생성되므로 이전 값을 유지하지 않음.유효 범위: 변수가 선언된 블록 내부에서만 접근 가능.초기화: 자동 변수는 초기화되지 않음. 초기화를 명시하지 않으면 쓰레기 값을 가짐.   2. 전역 변수 (Global Variable)모든.. 2025. 1. 13.
[C] 구조체 - 바이트 패딩(Byte Padding) 구조체- 여러 데이터 타입을 하나의 단위로 묶어 사용하는 기능   바이트 패딩(Byte Padding)?구조체 내 멤버들이 특정 크기(정렬 규칙)에 맞게 배치되는 과정메모리 정렬을 최적화하기 위한 방법. - 구조체의 멤버들이 메모리에 저장될 때, CPU가 효율적으로 접근할 수 있도록 추가되는 빈 공간 - 컴파일러는 구조체의 각 멤버를 메모리에 배치할 때, 특정 정렬 규칙을 따른다. 이 규칙은 CPU가 데이터를 읽고 쓸 때 최적의 성능을 발휘할 수 있도록 돕는다.- 구조체의 크기 할당은 크기가 가장 큰 자료형을 기준으로 배수만큼 커진다.     메모리 정렬CPU의 메모리 접근 효율을 높이기 위해 각 데이터 타입이 자신의 크기에 맞는 메모리 주소에 배치되도록 하는 규칙을 따른다.예를 들어, int는 일반적으.. 2025. 1. 13.
[C] 배열 복사- memcpy, 비교- memcmp memcpy 설명: 메모리 블록 간의 데이터를 복사한다.용도: 메모리 블록을 다른 메모리 블록으로 복사할 때 사용.특징:바이트 단위로 데이터를 복사.원본과 대상의 메모리 크기를 정확히 계산해야 함.원시 데이터 복사에 적합. 사용법void* memcpy(void* dest, const void* src, size_t num); dest: 복사 대상 메모리 블록의 시작 주소.src: 복사할 원본 메모리 블록의 시작 주소.num: 복사할 바이트 수.  예제int src[5] = {1, 2, 3, 4, 5};int dest[5];memcpy(dest, src, sizeof(src)); // src의 데이터를 dest로 복사  (예제코드 1) 1차원 배열 복사 #include #include int main().. 2025. 1. 13.