C언어 8

08. C언어_형식 변환 문자

안녕하세요 만수르에요 오늘은 C언어 자료형변환에 대해서 배워보겠습니다.변수에 들어가는 값을 상수라고 하는데 상수에는 크게 고정길이 상수와 가변길이 상수가 있습니다.고정 길이 상수란 데이터가 저장되는 자료형의 크기가 정해져있는 상수이며, 가변길이 상수는 문자열 상수와 같이 자료의 집합으로 데이터의 길이가 변할 수 있는 상수를 의미합니다. 이러한 상수들을 저장하는 데이터 형(자료형)에 대해서도 알아보겠습니다.변수가 정의된 자료형에 따라 저장될 수 있는 값의 종류와 범위가 결정되게 됩니다. 정수형 변수에서 짚고 넘어가야할 부분들에 대해서 말씀드리겠습니다.Char 문자형 자료형도 정수형에 포함된다. ch는 1byte의 크기로 저장할 수 있는 값의 범위는 -128~ 128이다. char type은 문자 상수('0..

C언어 2024.05.15

02. C언어_표준 입력 함수

표준 입력함수란? : 표준 입력 함수란 표준입력스트림(stdin)으로부터 데이터를 입력 받아오는 함수를 뜻합니다. 표준 입력함수의 종류1) int scanf(const char*, int, char, double, str) *str은 배열 명- 입력값 : 문자열 상수, 정수, 문자, 실수, 여백없는 문자열 변수)- 리턴값 : (정상입력시)성공적으로 입력받은 데이터의 개수, (실패시) EOF(-1)ex) res = scanf("%d\n", &num); 2) int getchar() : 문자전용 입력함수- 입력값 : space, tab, enter문자를 포함한 모든 문자 입력 가능- 리턴값 : (정상입력시) 성공적으로 입력 받은 문자의 아스키코드, (실패시) EOF(-1)ex) res = getchar();..

C언어 2024.05.15

06. C언어_포인터 변수 연산자, 주소 연산자

포인터 변수란?포인터 연산자는 선언문과 실행문에서 사용되며, 주소값을 가리키거나 메인 함수와 변수값을 주고 받을 때 주로 사용됩니다.선언문에서 포인터 변수가 사용될 때는 특정 자료형이 저장된 저장공간을 가리키고 있는 역할을 합니다.예를 들어 int * ptr 은 int형 자료공간을 가리키는 역할, char * ptr은 char형 자료공간을 자리키고 있는 역할 입니다.  예제1)#includeint main(void){    int x = 5, *ptr;    ptr = &x;    printf("%p %p %p %d %d\n", &ptr, ptr, &x, x, *ptr);    return 0;}>> 0x16bc734d0 0x16bc734d8 0x16bc734d8 5 5#includevoid input(..

C언어 2024.05.15

01. C언어_컴퓨터의 메모리 구조

메모리 구조- 컴퓨터의 메모리영역는 프로세스의 주소공간으로 구성되어 있으며,  4가지의 가상 공간으로 나뉘어져 있다 (code, data, heap, stack) 프로그램의 메모리 배치1. Code (Read Only)- 사용자가 작성한 프로그램 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환하여 저장되는 공간으로 프로그램이 실행되고 끝날 때까지 메모리에 남아있음- 구성 요소  : 명령어(기계어 코드) 2.1 Data (Read Only & Read write) - 변수, 상수 등의 프로그램이 사용하는 데이터를 저장하는 공간으로 프로그램이 실행되고 끝날 때까지 메모리에 남아있음- 구성 요소 : 문자열 상수(RO), 정적 변수(RW), 초기화된 외부 변수(RW) 등 2.2 BSS (Read wr..

C언어 2024.05.15

03. C언어_동적 메모리 할당(1차원 배열)

동적 메모리 할당이란?-  프로그램 수행중에 필요한 크기의 메모리를 할당받아 사용하는 것을 동적 메모리 할당이라고 한다.- malloc() 함수로 메모리를 할당받고, 사용이 끝난 메모리는 free()함수로 해제한다.- 동적 할당 메모리는 RAM 내의 heap영역에 할당된다.- 동적 할당 메모리는 이름이 없고 메모리의 주소만 가진다.- 동적할당 메모리는 할당시 부터 해제시까지 전체 프로그램에서 유효하며, 해제를 따로 하지 않았을 떄에는 main 함수가 끝날때 해제된다.- 장점 ) 프로그램의 사용중에 프로그래머가 원하는 만큼 데이터를 확보/제거하며 유동적으로 데이터를 관리할 수 있다. malloc, free 예시- malloc함수는 할당하고자하는 메모리의 크기를 입력받아 메모리를 할당한다. 할당에 성공 시 ..

C언어 2024.05.15

04. C언어_동적 메모리 할당 (2차원 배열)

1. 행, 열의 파라미터가 주어진 이차원 배열의 동적메모리 할당예제) 학생수를 입력받아 5과목에 대한 성적처리를 해라 (int(*p)[5] 배열 포인터 활용) #include//파일 입출력#include //동적 메모리 할당typedef int(*multiPtr)[5]; //원소 5개를 동시에 가리키는 배열 포인터 자료형 타입 선언multiPtr myAlloc(int); //동적 메모리의 시작주소를 나타내는 배열 포인터의 주소 반환void myDelete(multiPtr); //동적 메모리의 시작주소를 받아 동적메모리 해제void dataInput(multiPtr, int); //동적 메모리의 시작주소와 row수를 전달인자로 받아 데이터 입력void dataOutput(multiPtr, int); //동..

C언어 2024.05.15

05. C언어_문자열(String) 관련 function

1. 개요문자열은 문자형 자료의 집합으로 char형의 1차원 배열로 표현됩니다. 문자열 상수는 가변길이 상수이므로 반드시 데이터의 끝위치를 나타내기 위해 '\0'문자로 종료되며, 이중인용부호("")로 묶는다. 예를 들어 "hello"는 'h', 'e', 'l', 'l' 'o' '\0'의 집합이며,  char str[6] = "hello"로 나타낼 수 있다. 문자열 배열을 선언할 때 크기를 정하지 않으면 문자열의 크기만큼 메모리가 할당된다. 만약 실제 문자열의 크기보다 배열을 더 큰 사이즈로 선언한다면, 문자가 들어가고 남는 나머지 공간은 NULL로 채워진다. 문자열 변수는 다른 변수형의 배열과는 달리 문자열 자체가 하나의 의미를 가진다. 하지만 문자열도 결국 char들의 배열로 사용되기 때문에 배열 전체..

C언어 2024.05.15

07. C언어_퀵 정렬 (Quick sort)

퀵 정렬(Quick sort)이란?- 퀵 정렬은 기준값(pivot)을 중심으로 연속적으로 분할하며 정렬하는 기법 - pivot 값을 중심으로 pivot보다 작은 값을 왼쪽으로, pivot보다 큰 값을 오른쪽으로 배열시키는 방식 - sort가 완료될 때까지 (left>=right) 반복 퀵정렬 알고리즘 구현1. sort값의 가장 우측 값을 pivot으로 설정 2. 한 구간 안에서 다음을 반복적으로 수행한다. - 구간 좌측부터 pivot보다 큰 값을 j를 증가시키면서 검사 - 구간 우측부터 pivot보다 작은 값을 k를 감소시키면서 검사 - jk이면 한 구간에 대한 교환이 완료된 것이므로 j의 자리에 있는 값과 pivot의 값을 교환 (이때 pivot값을 중심으로 좌측에는 pivot보다 작은 값이, 우측에는..

C언어 2024.05.15