본문 바로가기

C21

Python으로 데이터 전달 - sizeof()와 strlen()로 안전한 메모리 관리 00 개요코드분석 중 C 언어에서 Python으로 데이터를 옮길 때, 문자열을 처리하는 도중 sizeof()와 strlen()을 활용하여 어느 문자열에서 사용 안 하는 공간을 0으로 초기화 시켜주는 것을 보았고 이에 대해 정리하고자 함sizeof()와 strlen() 함수를 활용하여 문자열과 메모리를 안전하게 처리하는 방법에 대한 정리!01 C에서 Python으로 데이터 전달 - sizeof() 와 strlen()로 메모리 초기화C 언어에서 Python으로 데이터를 전달할 때는 두 언어의 메모리 관리 방식의 차이로 인해 발생할 수 있는 잠재적인 문제들을 미리 방지하는 것 중요sizeof()와 strlen() 함수를 활용하여 문자열과 메모리를 안전하게 처리 가능1. sizeof()와 strlen()의 차이.. 2024. 9. 2.
구조체의 필드에 접근 방법 (->, .) 00 개요c 파일 코드분석 중 struct의 필드에 접근하는 방법이 여러가지인 것을 발견하여 이에 대한 정리01 구조체의 필드에 접근 방법C에서 구조체의 필드에 접근하는 방법은 구조체 변수의 유형에 따라 다름크게 두 가지 방법 존재: 구조체 변수가 직접적인 값일 때와 포인터일 때1. 구조체 변수로 접근 (직접 변수 접근)만약 구조체가 포인터가 아니라 직접 변수로 선언되었다면, . 연산자 사용하여 필드에 접근 가능예시struct lsInfo { int nRes; // 다른 필드들...};struct lsInfo info; // 구조체 변수를 직접 선언info.nRes = 5; // `.` 연산자를 사용하여 필드에 접근위 예제에서는 info는 lsInfo 구조체 타입의 변수info.n.. 2024. 8. 30.
PyList_New(size 또는 0) 00 개요파이썬 리스트를 생성하는 PyList_New() 함수에 대한 정리코드 분석 중 PyList_New() 함수는, 인자로 생성될 list의 크기를 줘야만 하는 함수인 줄 알았는데 PyObject *result = PyList_New(0)으로 선언한 뒤 result에 값이 추가가 되는 것을 보고 멘붕와서 이에 대한 설명을 하고자 함요약: PyObject* myList = PyList_New(0); 실행 시myList는 초기 크기가 0인 빈 Python 리스트로 생성됨이 리스트는 처음에는 요소를 포함하지 않지만, 이후에 요소 추가될 수 있음Python의 리스트는 동적으로 크기 조정이 가능하기에, 처음에 크기가 0이어도 나중에 항목 추가 가능'01 PyList_New(size) 함수1. 정의Python .. 2024. 8. 30.
memset (C 메모리 초기화 함수) 00 개요메모리... C...C.. 01 memset 함수1. 정의 및 역할= memory + setting = 메모리를 (특정 값으로) 세팅메모리의 내용(값)을 원하는 크기만큼 특정 값으로 설정하는 함수 2. 문법void* memset(void* ptr, int value, size_t num);Parametersvoid* ptr:세팅하고자 하는 메모리의 시작 주소즉, 그 주소를 가리키고 있는 포인터가 위치하는 자리a pointer to the block of memory to fillvalue:메모리에 세팅하고자 하는 값int 타입으로 받지만 내부에서는 unsigned char 로 변환되어서 저장됨즉 'a' 이런것을 넣어도 무방type integerconverts it to an unsigned ch.. 2024. 8. 28.
struct 구조체 (C언어 데이터 타입) 00 개요구조체에 대한 용어와 개념 소개, 정의 및 선언 방법 정리 01 구조체란1. 정의C 언어에서 구조체(struct)안, 타입이 다른 데이터를 하나로 묶을 수 있는 데이터 타입사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현 가능이때 구조체를 구성하는 변수를 구조체의 멤버(member) 또는 멤버 변수(member variable) 또는 필드 (field)라고 함2. 배열과의 비교배열 (array): 같은 타입의 변수 집합구조체 (struct): 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것02 구조체 정의 및 선언1. 정의 방법struct 키워드 사용struct 구조체이름{ 멤버변수1의타입 멤버.. 2024. 8. 9.
매크로 함수, 인라인 함수(#define, #inline) 00 개요inline 함수가 뭔지 알기 위해 매크로 함수도 알아야 할 것 같아 같이 정리함 01 Macro 함수C 언어에서는 #define에 함수를 정의함으로서 함수처럼 동작하는 매크로 (aka 매크로 함수) 생성 가능참조: 2024.06.25 - [C] - Macro (매크로)1. 정의매크로를 이용하여 함수의 역할을 대신 함 → 치환substitute함파라미터를 받기 가능, 반환 가능2. 문법#define 매크로함수명(인자) 치환내용 예시)#include // printf() 사용// #define 매크로함수명(인자) 명령어#define MY_PLUS(A, B) ((A)+(B))#define MY_MINUS(A, B) ((A)-(B))#define MY_MULTIPLY(A, B) ((A)*(B))#d.. 2024. 6. 25.
Macro (매크로) 00 개요목적: '매크로'란 개념이 뭔지 정리하고자 함 - 컴퓨터 과학 및 C 언어에서의 매크로 개념C 언어에서의 개념에 더 집중01 Macro란1. 정의 - in Computer Science'macro'컴퓨터 과학에서 매크로는 정해진 순서에 따라 특정한 입력이 특정한 출력으로 매핑되어야 하는지를 정의하는 규칙 또는 패턴을 의미하나의 매크로를 특정한 출력 시퀀스로 바로 만들어내는 매핑 과정을 "매크로 확장" (macro expansion) 이라고 함입력과 출력은 may be a sequence of lexical tokens or characters, or a syntax treeCharacter macros are supported in software applications to make it ea.. 2024. 6. 25.
# 및 ## (C 언어 매크로 연산자) 00 개요목적: #와 ##가 C 언어로 작성된 파일에서 어떤 기능을 갖고 있는지 정리하고자 함C 언어 전처리기(preprocessor)는 코드 컴파일 전에 미리 처리하는 단계로, #define 지시문을 통해 매크로를 정의할 수 있음C 언어의 #define 지시문 안에서 사용되는 매크로의 # 및 ## 연산자에 대한 내용01 # 연산1. 정의치환(substitute)의 역할을 함2. 예시#include #define STRING_NAME(A, B) #A "의 나이는 " #B "세입니다."main() { printf(STRING_NAME(저, 100));}02 ## 연산1. 정의결합(combine)의 역할을 함2. 예시#include #define CONCAT(a, b) a ## bmain() { .. 2024. 6. 25.
자료형 종류 (C 언어) 00 개요이젠 자료형을 알아야한다01 자료형이란1. 정의데이터를 표현하는 기준이자 방법변수, 상수 등이 자료형에 근거하며 자료형은 변수선언에 사용 가능 자료형은 미리 정의되어 있기 때문에 우리는 자료형의 이름을 이용해서 쉽게 메모리 공간을 할당 가능02 기본 자료형크게 정수형과 실수형으로 나뉨자료형크기값의 범위정수형char1 byte-128 ~ +127short2 byte-32,768 ~ +32,767int4 byte-2,147,483,648 ~ +2,147,483,647long4 byte-2,147,483,648 ~ +2,147,483,647long long8 byte-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807실수형float4 byte±3.4x10.. 2024. 6. 24.