728x90

2024/10/10 6

[C언어] 구조체, 열거형, 공용체란?

C 언어에서는 데이터를 효율적으로 관리하고 코드를 읽기 쉽게 작성하기 위해 구조체(struct), 열거형(enum), 공용체(union)라는 세 가지 중요한 데이터 구조를 제공한다. 구조체 (struct)구조체(struct)는 서로 다른 데이터 타입을 하나의 단위로 묶어주는 역할을 한다. 구조체의 특징서로 다른 데이터 타입을 하나로 묶을 수 있다.구조체를 정의하고 나면, 이를 하나의 데이터 타입처럼 사용할 수 있다. 구조체 정의 방법struct 구조체이름 { 데이터타입 멤버1; 데이터타입 멤버2; ...};struct : 구조체를 정의하기 위한 키워드이다.구조체이름 : 구조체의 이름으로, 사용자가 자유롭게 지정할 수 있다.멤버 : 구조체가 포함하는 데이터 필드로, 서로 다른 데이터 타입의..

C언어 2024.10.10

[C언어] 쉬프트 연산과 비트 연산

쉬프트 연산이란?쉬프트 연산은 이진수의 비트를 좌우로 이동시키는 연산이다. 쉽게 말해서 숫자의 비트를 좌측이나 우측으로 밀어서 새로운 값을 만드는 연산이다.왼쪽 쉬프트(비트를 왼쪽으로 민다.왼쪽 쉬프트는 곱셈처럼 동작한다. a 는 a * (2^b)와 같은 결과가 나온다.오른쪽 쉬프트(>>)비트를 오른쪽으로 민다.오른쪽 쉬프트는 나눗셈처럼 동작한다. a >> b는 a / (2^b)와 같은 결과가 나온다. 쉬프트 연산의 활용 예시비트 마스크 생성: 특정 비트를 1로 설정하거나 0으로 클리어할 때 쉬프트 연산을 많이 사용한다. 예를 들어, 1 은 00001000이 돼서 네 번째 비트를 1로 만드는 데 사용할 수 있다.빠른 계산: 곱셈과 나눗셈 대신 사용할 수 있어서 속도 최적화에 도움이 된다. x * 4 대신..

C언어 2024.10.10

인터럽트(Interrupt)란?

인터럽트는 시스템에서 예기치 않은 이벤트가 발생했을 때, 현재 실행 중인 작업을 잠시 중단하고, 해당 이벤트를 처리하는 기능을 의미한다. 쉽게 말해 끼어들기이다. 인터럽트가 발생하면, CPU는 현재 상태를 저장하고 인터럽트 서비스 루틴(ISR)을 실행하여 해당 이벤트를 처리한 후, 다시 이전 작업으로 복귀한다. 이를 통해 시스템은 중요한 이벤트에 빠르게 반응할 수 있다. 운영체제(OS)에서의 인터럽트운영체제에서 인터럽트는 CPU가 외부 장치나 내부 이벤트에 즉각적으로 반응할 수 있도록 하는 중요한 메커니즘이다. 인터럽트를 통해 CPU는 외부의 요청(예: 키보드 입력, 마우스 클릭)이나 하드웨어 장치의 상태 변화를 빠르게 처리할 수 있다. OS에서의 인터럽트 종류하드웨어 인터럽트: 하드웨어 장치에서 발생하..

CS 2024.10.10

[C언어] (void *) 포인터란?

(void *)는 특정 데이터 타입에 제한되지 않은 '일반 포인터'입니다. 보통 포인터는 특정 타입을 가리키지만, void *는 어떤 타입의 메모리든 가리킬 수 있는 일종의 만능 포인터라고 생각하면 됩니다. 쉽게 말하면, 이 포인터는 "난 어떤 타입이든 가리킬 수 있어!"라는 느낌입니다. 이런 특성 덕분에 void *는 다양한 상황에서 유용합니다. 특히 메모리 할당 함수에서 자주 등장합니다. 예를 들어, malloc() 함수는 동적으로 메모리를 할당하는데, 이때 반환값으로 void * 타입을 리턴합니다. 그 이유는, 이 메모리를 어떻게 사용할지에 따라 타입이 달라질 수 있기 때문입니다.int *p = (int *)malloc(sizeof(int) * 10); 위 코드에서 malloc()은 void *를 ..

C언어 2024.10.10

[C언어] memcpy() 함수

memcpy() 함수는 C 프로그래밍 언어에서 메모리 블록을 복사하는 함수이다. 원본 메모리 블록에서 지정한 크기만큼의 데이터를 목적지 메모리 블록으로 그대로 복사할 때 사용된다. 사용법#include void *memcpy(void *dest, const void *src, size_t n); 매개변수dest : 데이터를 복사할 목적지 메모리 블록의 시작 주소이다.src : 복사할 원본 메모리 블록의 시작 주소이다.n : 복사할 바이트 수를 나타낸다.반환값복사된 목적지 메모리 블록의 시작 주소(dest)를 반환한다. 예제1)#include #include int main() { char src[] = "Hello, World!"; char dest[20]; // src 배열의 내용을 d..

C언어 2024.10.10

[C언어] memset() 함수

memset() 함수는 C 프로그래밍 언어 메모리의 특정 영역을 원하는 값으로 초기화(세팅)할 때 사용되는 함수이다.이 함수는 동적 메모리 할당이 아닌 정적 메모리 할당 또는 자동 메모리 할당이라고 부른다.함수의 이름 보면 뜻을 알 수 있다. memory + setting 메모리를 특정 값으로 세팅한다. 사용법#include void * memset(void* ptr, int value, size_t num); 매개변수ptr : 초기화할 메모리의 시작 주소이다.value : 메모리에 설정한 값이고, unsigned char로 변환되어 사용된다. 0~255 사이의 값을 넣으면 된다.num : 초기화할 바이트 수이다. 메모리에서 몇 바이트를 이 값으로 채울지 지정한다.반환값초기화된 메모리의 포인터를 반환한다..

C언어 2024.10.10
728x90