함수 포인터
- 함수명 아에 * 붙여주기
- 함수 포인터도 포인터이므로 주솟값 저장
사용 이유
- 동적 바인딩 : 런타임 시점에 메모리 크기와 위치 결정
- vsCode의 extention : 플러그인 방식
- 동적 바인딩 + 플러그인 방식 => 프로그램의 유연한 확장성
구조체
: 하나 이상의 서로 다른 종류의 변수들을 묶어서 새로운 '데이터 타입'을 정의하는 것
- 추상적이다 = 나만 아는 타입임
사용 이유
- 연관된 변수들을 하나로 묶어 관리해 데이터 관리에 유용
- 데이터 양(변수의 개수)이 많아지면 구조체가 유리
예)
struct student {
char name[10];
int age;
int height;
};
- struct : 구조체라는 데이터 타입을 의미
- student : 내가 만든 구조체의 이름 = 내가 정의한 새로운 데이터 타입
- name, age, height : 구조체 멤버
- 구조체 변수 만들기 : student st1 ;
- 구조체 멤버에 접근 : 구조체변수명.구조체멤버 (.(점)사용 - 직접 접근)
공용체
: 이것도 사용자 정의 자료형
: 구조체와의 차이는 메모리 공간을 공유한다는 점이다.
-키워드 : union
열거형
: enumeration의 약자로 enum(이넘)이라 읽음
: 데이터들을 열거한 집합
: 컴파일러는 열거형 멤버들을 정수형 상수로 취급
-키워드 : enum
동적 메모리 할당
메모리 영역 : 코드 영역, 스택 영역, 힙영역, 데이터 영역
코드영역 : 실행 명령어들 저장
- 실행할 명령어들이 순서대로 쌓임, cpu가 이 영역에서 명령어들을 하나씩 가져다 처리
스택영역 : 지역 변수 및 매개변수 저장
- 우리가 사용한 지역 변수, 매개변수 등 모두 스택 메모리를 사용함
힙영역 : 프로그래머가 직접 할당 = '큐'라고도 함
- 컴퓨터 메모리의 일부가 할당됐다가 회수되는 일들의 반복 -> 동적 메모리!
- 컴파일 시가 아닌 실행 시 사용자로부터 할당 메모리를 입력 받음
데이터 영역 : 전역변수, static 변수 저장 -> 프로그램 종료 시 소멸
사용 이유
예) 학생수 -> 전학 등으로 자주 바뀜
- 일반 변수로 선언한다면 ? -> 컴파일 타임 시 할당됨 => 학생 수 바뀔 때마다 프로그램을 재컴파일 해줘야함 (재배포)
- 동적 메모리 사용! : 고정하지 않고 실행(=런타임) 시 결정
- malloc 사용
'데브코스 > 강의 정리' 카테고리의 다른 글
오버로딩, 오버라이딩, 인터페이스, 람다 (2) | 2024.10.28 |
---|---|
객체 지향, 추상화, 캡슐화, 클래스, 생성자, 상속성 (0) | 2024.10.28 |
연산자, 조건문, 반복문, 함수, 변수의 범위, 배열, 포인터 (0) | 2024.10.24 |
프로그래밍의 기본 원리-변수와 자료형 (1) | 2024.10.23 |
js 기초 (0) | 2024.10.22 |