Programming 15

[C] 함수 포인터 (개념간단정리)

## 함수포인터란? : 함수의 주소를 저장하는 포인터 - 용도 > 함수 이름 직접 쓰지 않아도됨 > 변수처럼 전달 / 교체 가능 (다른 함수로)int add(int a, int b) { return a+b; }int sub(int a, int b) { return a-b; }void calculate(int (*op)(int,int), int x, int y){ ## printf("%d\n", op(x,y));}int main(){ calculate(add, 3, 4); calculate(sub, 7, 2);} - 형태int (*f) (int*) - int*인자받아 int반환하는 함수 가리키는 포인터void (*f) (void) - 인자x 반환값x 함수 가리키는 포인터int* (*f) ..

Programming 2025.10.10

[C] C언어 특성 정리 (4) - 배열,가변인자,전처리명령어

## C 프로그램의 메모리 구조 ## C 변수 종류 지역변수정적 지역변수전역변수정적 전역변수선언 위치함수 내부함수 내부함수 바깥함수 바깥수명함수 실행중프로그램 전체프로그램 전체프로그램 전체접근 범위함수 내부만함수 내부만모든 파일현재 파일만메모리 위치StackData > .dataDataData > 정적 변수: static 키워드> 전역 변수: extern 키워드 (외부에서 접근하려면) ## C에서의 배열 : 같은 타입의 데이터들을 메모리에서 연속적으로 저장하는 공간 - 선언:int arr[5]; -특징: > 배열 이름이 주소 ([0]의 주소) >> arr = &arr[0] # 배열이름이 포인터처럼 행동하지만 진짜 포인터는 아님 > 같은 타입의 데이터를 메모리에서 연속적으로 ..

Programming 2025.10.09

[C] C언어 특성 정리 (2) - 포인터

## 포인터 Pointer : "메모리 주소"를 값으로 저장하는 변수 (cf. 일반변수 - 실제 데이터값을 저장) - 용도: 메모리 직접 접근/조작 , 동적 메모리 할당 , 함수로 변수 값 변경 , 배열/문자열 효율적 처리 - 핵심 연산자: & (앰퍼샌드) - 주소 연산자 / * - 간접참조 연산자(가리키는 주소의 실제데이터값 접근) - 크기: 1워드의 크기 (8 / 16 / 32 / 64 bit) ## 포인터 선언int *p1; # 정수 가리키는 포인터char *p2; # 문자열 가리키는 포인터double *p3; # 실수 가리키는 포인터 ## 포인터 사용 주의사항 (3) 1- 포인터는 초기화하고 사용하는 게 안전. (어떤 변수 가리킬 지 알 수 없으면 N..

Programming 2025.10.08

[C] C언어 특성 정리 (1) - 선언,정의,static,extern,enum,union,빌드과정

## 목차 1- 선언 & 정의 개념 2- 전방선언 개념 3- static & extern 개념 4- enum, union 개념 5- 빌드 과정 총정리 (컴파일 언어) ## 선언& 정의 / 선언 : 이런 변수/함수/타입이 어딘가에 있다 알려주는 것 - 메모리 할당 X - 보통 헤더파일에 들어감 (**헤더파일 : 다른 파일에 제공할 기능 알리는 설명서 역할)// 선언 예)int x;int fn(int a); / 정의 : 실제 메모리를 할당하거나 함수 내용 구현 - 보통 소스파일에 들어감 (** 소스파일: 알려준 기능들로 실제 작동 구현 담은 파일)//정의 예)int x = 10; //메모리 생성됨int fn(int a) { return a+1;} ## 전방선언 forward dec..

Programming 2025.10.08

[Python] 빠른 입출력 > sys

문제상황파이썬 기본 입출력 input(), print() 속도가 느려서 알고리즘 시간초과 될 때 있음.해결input() -> readline() (sys라이브러리)print() -> write() (sys라이브러리) import sys# inputn = sys.stdin.readline() #[enter]를 줄바꿈기호(\n)로 받아들임 주의# outputsys.stdout.write(n) #print()와 달리 줄바꿈 직접해줘야함(\n) # input() : 내부적으로 sys.stdin.realine()을 감싸고 있음 -readline() 읽은 뒤, 끝의 개행문자 '\n'을 자동으로 잘라줌 # sys.stdin.realine() : 있는 그대로 문자열 가져옴 ("123\n") ----..

Programming/Python 2025.09.09

[파이썬-개념] 슬라이싱

슬라이싱 [ : ] : 문자열, 리스트 같은 sequence 자료형에서 일정 구간 잘라내는 기능arr = [10, 20, 30, 40, 50]## 기본 =====print(arr[1:4]) # [1]~[3] >>[20,30,40]## start 생략 ========print(arr[:3]) # 처음~[2] >>[10, 20, 30, 40]## end 생략 ========print(arr[3:]) # [3]~끝 >>[40, 50]## 둘다 생략 ========print(arr[:]) # 전체 복사## 스텝 지정 =========print(arr[::2]) # 처음~2칸씩 건너뜀 >>[10,30,50]## 역순 =========print(arr[::-1] # 마지막~처음 >>[50,40,30,2..

Programming/Python 2025.09.05

[python] 변수 범위 / global / nonlocal

파이썬은 C/Java같은 블록 스코프가 없음. 대신 "함수 단위 스코프"만 있음.--> for, if, while 블록 안에 만든 변수는 전역변수--> 함수 내에서 만든 변수는 지역변수 > 함수 내에서 전역변수 선언방법 : "global"def add(): global count += 1 ## > 함수 안의 함수가 지역변수 접근방법 : "nonlocal"def outer(): x = 10 #바깥 함수의 지역변수 def inner(): nonlocal x #안쪽 함수의 참조변수 (얘 바꾸면 바깥 x도 바뀜) print(x) # 10

Programming/Python 2025.09.05

[python - 해결] 줄바꿈없이 출력, list 쉽게 생성, 원하는만큼만 입력받기

문제 목록 1. print() 쓸때마다 줄바꿈되는 문제 > 해결: print()의 end 속성 ----> 줄바꿈없이 print() 여러번 호출 가능2. input() 받을때 원하는 것보다 더 많이 받는 상황 > 해결: 일단 list에 모두 넣고 ":" 로 슬라이싱 ----> 더 받은 부분 잘라내고 쓰면 됨개선 목록 a. list 만들때마다 길어짐 (for문 사용) > 해결: " Comprehension " 기능 ----> list 생성 간결해짐b. list 값들 출력할때마다 길어짐 (for문 사용) > 해결: " * 언패킹 " 기능 ----> list 요소들 출력 간결해짐 ## 별 여러개 줄바꿈 없이 출력 " end " =============================..

Programming/Python 2025.09.05

[python] 주요 자료형, 이터러블, 이터레이터

** 파이썬 - 기본적으로 동적 타이핑 언어 > 하나의 컨테이너 안에 여러 자료형 섞어써도 됨 (다만 실무에선 혼합 잘 안하고 dict, list에나 씀) 파이썬 주요 내장 자료형자료형순서변경중복리스트 (list)OOO튜플 (tuple)OXO문자열 (str)OXO딕셔너리 (dict)XOkey : Xvalue : O집합 (set)XOX 1) 시퀀스 자료형 - list : 가장 많이 쓰임. (배열, 스택, 큐 등으로 / 용도: 같은 종류의 데이터가 여러개 있을때 - 예) (여러 사람의 이름) )li = [1,2,3,4]# edit ====li.append(5) # [1,2,3,4,5]li[0] = 0 # [0,2,3,4,5]li.pop() # [0,2,3,4] - tuple : 변..

Programming/Python 2025.09.05