CS/Programming 4

[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) ..

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

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

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

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

[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..