13. 구조체(struct), 열거형(enum), 동적 메모리 할당(malloc), 연결 리스트
·
Coding/C
구조체 (structure)배열 : 같은 자료형의 집합구조체 : 다양한 자료형의 집합>> 관련 있는 데이터를 하나의 단위(객체)로 표현 열거형 (enumerate)변수가 가질 수 있는 값의 종류가 한정된 경우(상태 코드, 요일 등), 의미 있는 이름(상수)를 부여하여 사용하는 자료형- 내부적으로는 정수(int)로 처리- 기본적으로 0부터 시작하여 1씩 증가(자동할당), 필요시 값 지정 가능 동적 메모리 할당 (Dynamic Memory Allocation)프로그램 실행 중에 필요한 만큼 메모리의 Heap 영역을 할당>> 크기를 미리 알 수 없거나, 실행 중에 크기가 변하는 자료형(배열)에서 사용- 동적 할당된 메모리는 프로그램이 끝날 때까지 유지되므로, 사용 후 해제하여 메모리 누수 방지 필요 연결 리스..
12. 문자열
·
Coding/C
문자열 상수 (literal) : "abc"- " " 로 묶인 문자들의 나열- 끝에 NULL 문자('\0') 포함 - 저장 위치 : Data 영역 (수정 불가능) 문자열 변수 (variable) : char str[] = "abc";- C언어 에서는 별도의 문자열 타입 존재 X (Python: str 존재) >> 문자 배열 (char str[])을 사용해 문자열 상수의 값을 복사하여 사용- 문자열 상수는 항상 끝에 NULL 문자를 포함하므로, 배열의 크기를 (문자열 길이 + 1) 로 선언하여야 문자열 함수 사용시 오류 X - 저장 위치 : Stack 영역 (수정 가능) 문자열 포인터 : char *p = "abc";- 문자열 상수를 가리키는 포인터- 포인터 변수(p)는 주소(문자열 상수 "abc"의 첫 ..
11. 포인터와 배열
·
Coding/C
포인터와 배열의 관계int arr[10];int *p;// 아래의 두 코드는 동일p = &arr[0];p = arr; // 배열 이름 자체가 배열의 첫 번째 요소의 메모리 주소를 나타내는 상수 포인터 연산- p++ / p-- : p가 배열을 가리키는 포인터 변수인 경우, 인덱스 이동과 동일 (자료형의 크기만큼 주소 증감) 포인터와 다차원 배열#include #define ROW 2#define COL 2int main() { int arr[ROW][COL] = { {1, 2}, {3, 4} }; int *p; // 포인터 변수 선언 for (p = &arr[0][0]; p + 함수의 매개변수를 배열로 선언하고자 할 때, int a[..
10. 포인터
·
Coding/C
메모리 / 주소- 메모리는 byte 단위로 나누어져 있음- 각 byte는 고유한 주소를 가짐 변수는 여러 바이트에 저장 > 변수가 저장된 메모리의 시작 주소 = 변수의 주소 포인터 변수 : 변수(객체)의 주소를 저장하는 변수포인터 연산자- 주소 연산자 (&) : &변수명 = 해당 변수의 메모리 주소 반환- 간접 연산자 (*) : 선언 - 해당 변수가 포인터임을 나타냄 // 사용 - 해당 포인터가 가리키는 주소의 실제 값 (값의 복사본 X) 값에 의한 전달 (Call by value)#include void swap(int p, int q) { printf("Before swap: p = %d, q = %d\n", p, q); int temp = p; p = q; q = tem..
09. 변수의 범위와 지속기간
·
Coding/C
변수의 범위 (Scope)지역 변수 (Local Variable) : 함수(매개변수-parameter)/블록 내부 (Block Scope)전역 변수 (Global Variable) : 함수 외부 > 모든 함수가 공유/수정 가능 (File Scope) 변수의 지속기간 (Storage Duration)자동 지속 기간 (Automatic Storage Duration) : 지역 변수의 특성함수/블록 시작 > 메모리 할당 > 함수/블록 종료 > 메모리에서 해제정적 지속 기간 (Static Storage Duration) : 전역 변수의 특성프로그램 시작 > 메모리 할당 > 프로그램 종료 > 메모리에서 해제+ static 지역 변수 : Block Scope + Static Storage Duration >> 다음..
08. 함수
·
Coding/C
함수 선언 및 호출// 함수 선언int function_1(int a, int b) {// [반환형] [함수명] (매개변수) // body int result; ... return result; // return하는 변수의 자료형이 선언한 반환형과 같아야함}// 함수 호출int main() { int num_1, num_2; function(num_1,num_2); // 인수의 자료형이 선언한 매개변수의 자료형과 같아야함 return 0;} 재귀함수1. 재귀 호출 조건 필요return문 내에 자기 자신의 함수를 다시 호출하는 부분이 포함됨 2. 종료 조건 필요특정 조건일 때 반환형을 return하여 무한반복되지 않고 종료되어야함 예제- 정수 자릿수 계산#include l..