본문 바로가기

c 언어10

구조체의 필드에 접근 방법 (->, .) 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.
매크로 함수, 인라인 함수(#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.
# 및 ## (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.
Local vs Global Variable (지역 vs 전역 + static 변수) 00 개요목적: C 언어를 공부하는데 지역 변수, 전역 변수 용어들이 등장해서 정리하고자 함C 언어에서 변수는 크게 지역, 전역, 그리고 static 변수로 나뉨각 변수의 종류는 변수의 범위와 수명 등에서 차이가 있음 01 지역 변수 (Local Variable)1. 정의특정 블록 { }에서 선언된 변수, 블록 내에서만 사용 가능보통 함수 내에서 사용됨지역 변수는 함수가 호출되면 생성되며 함수 종료 시 소멸됨 (메모리 stack영역에 저장되기 때문)2. 예시#include void test() { int num = 10; // 지역 변수 num 선언 printf("%d\n", num);}int main() { test(); printf("%d\n", num); return 0;.. 2024. 6. 24.
Declaration vs Definition (선언과 정의) 00 개요c 언어를 공부하는데 변수를 선언하느냐 정의하느냐 해서 이에 관해 정리해보고자 함01 Declaration vs Definition (선언과 정의)1. 각 용어의 정의Declaration: A declaration simply informs the program that a variable/function exists somewhere within the program, providing info about its type (for variables) and its arguments and return type (for functions). Declarations do not allocate memory. Definition: A definition encompasses everything th.. 2024. 6. 24.
strcpy() strcpy_s() (문자열 복사 함수) 00 개요목적: 문자열을 복사하는 함수인 strcpy()와 strcpy_s()에 대해 정리하고자 함01 strcpy() 함수란1. 정의'string copy''문자열을 복사한다'어떤 변수(메모리) 또는 문자열 상수에 저장되어 있는 문자열을 다른 변수(메모리)에 복사 시 사용됨반환값: char * 형식의 주소NOTE: 복사할 원본 문자열은 반드시 끝에 NULL 문자가 포함되어 있어야 함2. 문법 (함수의 원형)strcpy 함수의 원형은 string.h에 다음과 같이 선언되어있음char *strcpy(char *strDestination, const char *strSource);strcpy() 함수는 2개의 parameter를 사용하여 2번째 인자인 strSource 포인터가 가리키는 메모리에 저장된 문자.. 2024. 6. 21.
struct (구조체) 00 개요목적: C 언어에서 사용되는 구조체 이해하기자료형기초 자료형 Primary파생 자료형Derived사용자-정의 자료형User-Definedint / unsigned intshort / unsigned shortlong / unsigned longchar / unsigned charfloatdoublelong doublevoid...function (함수)array (배열)pointer (포인터)reference (참조)classstruct (구조체)union (공용체) typedefenum (열거형)동일한 종류의 데이터를 하나로 묶을 경우 배열을 사용했지만 (int numbers[5] = { 2, 5, 3, 7, 1 };), 다른 종류의 데이터(int, double, char, etc.)를 하나로.. 2024. 6. 21.
전처리기 (Preprocessor, Precompiler) 00 개요회사에서 SWIG 인터페이스 파일을 코드 분석 하는데 #define이라는 것이 나와서 뭔지 알아보고자 함#define을 이해하기 위해선 #define을 포함하는 '전처리기' 및 '지시자'라는 개념을 알아야 해서 이 용어들을 먼저 이해해보고자 하다가 #define에 집중하기 보단 '전처리기'가 무엇인지, 어떠한 전처리기가 있는지에 대한 내용을 다루는 것이 더 나을 것 같아 '전처리기'에 대해서 정리해보고자 함01 전처리기 (Preprocessor, Precompiler)란0. 개요우리는 C 언어로 어떤 프로그램을 만들 때 소스 코드를 짜고, 컴파일(기계어화)을 한 후, 링크를 한다'전처리기(Preprocessor, Precompiler)'는 소스 코드를 짠 후 컴파일 하기 직전에 처리하는 컴파일러.. 2024. 6. 19.