본문 바로가기

C74

C언어] 동적 배열 [동적 배열] 1. 동적 배열? 배열의 연속된 메모리 공간이라는 특성 때문에 선언한 크기 이상의 요소를 추가할 수 없다. 실행 중에 필요한 만큼 크기를 늘렸다 줄였다 할 수 있는 배열을 동적 배열이라고 한다. 동적 배열을 만드는 기본 원리는 최초 적당한 길이로 초기 할당하되 삽입되는 정보가 할당된 메모리양을 초과할 때 배열의 크기를 더 늘리는 것이다. malloc, realloc, free 함수를 사용하여 동적 배열을 다룰 수 있다. HTML 삽입 미리보기할 수 없는 소스 malloc 함수를 사용하여 초기 동적 배열을 할당하고, realloc 함수를 사용하여 배열 크기를 조절한다. 마지막에는 free 함수를 사용하여 동적으로 할당된 메모리를 해제. realloc 함수를 사용할 때는 새로운 크기로 재할당할.. 2023. 12. 30.
C언어] 배열 요소의 삽입, 삭제 [배열 요소의 삽입, 삭제] 1. 배열 장,단점. 배열의 장점중 하나는 단순한 구조이기 때문에 정보 자체를 기억하는 메모리 외에 추가로 소모하는 메모리가 전혀 없어 공간 효율이 좋다. 또한 배열 크기가 아무리 커지더라도 검색 속도가 일정하다. 배열의 첨자 연산은 포인터를 통해 시작 번지에 첨자*요소크기를 더하는 간단한 동작이므로 임의의 한 요소를 참조하는 시간이 상수이다. 하지만 배열의 단점으로는 연속된 메모리 공간에 배치되어 있어야 하므로 중간의 요소를 삭제하거나 새로운 요소를 삽입할 수 없다는 점이다. 1. 배열 요소의 삽입, 삭제 memmove 함수는 C 라이브러리에서 제공되는 메모리 영역을 복사하는 함수이다. 이 함수는 memcpy와 유사하지만, 메모리 영역이 겹치더라도 안전하게 복사할 수 있다... 2023. 12. 30.
C언어] 구조체 [구조체] 1. 구조체(Structure)란? C언어의 데이터 타입 중에 가장 크다. 정수, 실수, 문자열 등의 단순한 형태로 나타낼 수 없는 복잡한 데이터를 표현할 때 구조체를 사용한다. "타입이 다른 변수들의 집합","이종 변수 집합" 배열이 타입이 같은 변수들의 집합인 것에 비해 구조체는 다른 타입을 가지는 변수들을 하나의 이름으로 묶어둔 것이다. 구조체선언은 어디까지나 구조체의 모양을 컴파일러에게 알리는 것뿐이므로 static, register 같은 기억 부류를 지정한다든가 초기값을 줄 수 없다, 구조체의 인스턴스를 생성하거나 메모리를 할당하기 위한 것이 아님. 선언된 구조체는 실제로 메모리가 할당되기 전까지는 어떤 값도 가지지 않는다.. 2023. 12. 23.
C언어] 동적 메모리 할당과 해제 [동적 메모리 할당과 해제] 1. 동적 메모리 할당과 해제 포인터는 동적 메모리 할당과 해제에도 사용된다. malloc, calloc, realloc 함수를 사용하여 메모리를 동적으로 할당하고, free 함수를 사용하여 할당된 메모리를 해제한다. HTML 삽입 미리보기할 수 없는 소스 위 코드에서 malloc함수를 사용하여 동적 할당을 하고 free함수로 할당 메모리를 해제 한다 2023. 12. 23.
C언어] 포인터 [포인터] 1. 포인터 란? 포인터는 메모리 주소를 저장하는 변수로, 다른 변수의 주소를 가리킨다. 포인터를 사용하면 간접적으로 메모리에 접근하여 데이터를 조작할 수 있다. 포인터의 선언과 초기화 포인터는 특별한 데이터 타입으로 선언된다. 변수 앞에 '*'기호를 붙여 포인터를 나타낸다. 포인터의 사용 포인터를 사용하여 메모리를 읽거나 쓸 수있다. 포인터의 값은 주소이므로 주소 연산자 '&'를 사용하여 변수의 주소를 얻을 수 있다. HTML 삽입 미리보기할 수 없는 소스 2023. 12. 22.
C언어] 다차원 배열 [다차원 배열] 1. 2 차원 배열 2차원 배열은 첨자 두 개를 사용하는 배열이다. data_type array_name [row_size][column_size]; data_type: 배열에 저장되는 데이터의 타입을 나타냄. 예를 들어, 정수형 배열이라면 int, 부동 소수점형 배열이라면 float 등이 될 수 있다. array_name: 배열의 이름을 나타냄. row_size: 배열의 행(row) 크기를 나타냄. column_size: 배열의 열(column) 크기를 나타냄. HTML 삽입 미리보기할 수 없는 소스 2023. 12. 22.
C언어] 성적표 [성적표] 툴 버전 : Visual Studio 2022 성적표 : 4명의 성적을 입력받고 총점과 평균을 알려준다. 예외 처리는 0~100까지만 입력, 문자열 제외 다시 입력받기 HTML 삽입 미리보기할 수 없는 소스 2023. 12. 22.
C언어] 시간 함수 [시간 함수] 툴 버전 : Visual Studio 2022 시간 함수 코드로 정리하기 HTML 삽입 미리보기할 수 없는 소스 time_t time (time_t *timer); time 함수는 현재 시간을 얻기 위해 사용된다. 함수는 시간 정보를 나타내는 time_t 형식으로 현재 시간을 반환. timer 매개변수가 주어지면, 현재 시간을 timer에 저장하고 반환. 만약 timer가 NULL이면, 반환값만 얻게 된다. char *ctime (const time_t *timer); ctime 함수는 time_t 형식의 시간 정보를 사람이 읽기 쉬운 문자열로 변환. 반환값은 정적인 버퍼에 저장된 문자열이므로 이를 복사해야 한다. 2023. 12. 22.
C언어] 문자열 입력 받아서 출력 하기 [문자열 입력 받아서 출력 하기] 툴 버전 : Visual Studio 2022 문자열 char *fgets (char *s, int size, FILE *stream); s: 문자열이 저장될 버퍼의 포인터입니다. size: 버퍼의 크기를 나타내는 정수입니다. stream: 데이터를 읽을 파일 스트림입니다. 여기서는 stdin 즉, 표준 입력 스트림을 나타냅니다. fgets 함수는 성공적으로 문자열을 읽으면 s를 반환하고, 실패하면 NULL을 반환합니다. HTML 삽입 미리보기할 수 없는 소스 코드에서 fgets 함수는 사용자로부터 문자열을 입력받아서 inputString 배열에 저장한다. sizeof(inputString)는 inputString 배열의 크기를 나타낸다. 이렇게 함으로써 입력받을 문자열.. 2023. 12. 22.
728x90