반응형

C & C++ 27

[C언어] 동적 할당 원리 및 방법(malloc, calloc, realloc) 정리

C언어 동적 메모리 할당(Dynamic Memory Allocation) 동적 할당 원리, 정적 할당과의 비교 동적 할당을 다루기 전에 먼저 기본적인 정적 할당 방법을 살펴보겠습니다. #include int main(){ // 배열 선언(정적 배열 선언) int arr[5]; // 값 할당 예시 arr[0] = 1; arr[1] = 3; arr[2] = 5; } 위와 같이 처음에 5칸으로 배열의 크기를 지정하여 선언하는 방식입니다. 이 경우에는 컴파일 단계에서 자동으로 메모리를 할당해 주는데요. 스택 영역에 메모리 공간을 배정받게 되어 고정된 칸 수만 가질 수 있습니다. (쉽게 생각하면 스택 중간에서 갑자기 차지하는 공간을 늘리거나 줄이는 것이 쉬운 작업은 아니라는 것을 직감하실 수 있을 것입니다.) 이..

C & C++ 2022.11.18

[C언어] 문자열 내 특정 문자(열) 등장 횟수 탐색 방법

C언어 특정 문자(열) 개수 세기(1글자, 여러 글자 모두 가능) 문자열 s 내에서 부분 문자열 find의 등장 횟수를 찾는 예시 코드는 아래와 같습니다. #include #include int main(){ char s[30] = "hello world! hello hello hi"; // 전체 문자열 char *find = "hello"; // 찾고 싶은 문자열 지정 char *ptr = strstr(s, find); // 첫 등장 위치 탐색 int cnt = 0; // 등장 횟수를 셀 변수 while (ptr != NULL) // 더이상 find 문자열이 등장하지 않을 때까지 반복 { ptr = strstr(ptr + 1, find); // 다음 등장 위치 탐색 cnt++; } printf("%s는..

C & C++ 2022.09.29

[C언어] 배열, 문자열 슬라이싱 구현 예제

파이썬 등의 일부 프로그래밍 언어에서는 다음과 같이 특정 위치 부분을 추출하는 "슬라이싱"이라는 기능을 제공합니다. list_a = [1, 3, 5, 7, 9] str_a = "hello world!" # 파이썬 슬라이싱 예시 print(list_a[1:4]) # [3, 5, 7] print(str_a[2:6]) # "llo " 그렇다면 C언어에서도 배열이나 문자열에 대하여 위와 같은 슬라이싱을 적용할 수 있을까요? 결론부터 말씀드리면, 포인터 및 동적할당을 통하여 간접적인 방법으로는 가능합니다! 여기서는 정수 배열 및 문자열에 대하여 슬라이싱 기능을 하는 함수를 구현해보도록 하겠습니다. C언어 배열 슬라이싱 구현 arr_slicing(arr, start, end) 형태로 int 자료형 배열 arr, 시..

C & C++ 2022.09.23

[C언어] 배열 내 특정 값 포함 여부 / 원소 위치 인덱스 찾기 구현

C언어 array 원소 존재 여부, 인덱스 번호 탐색 예제 C언어에서 배열 내에 특정 원소가 포함되어 있는지 여부를 탐색하거나 값이 들어있는 위치의 인덱스 번호를 가져오는 방법의 예시를 다루어 보겠습니다. 배열 안에 값이 포함되어 있는지 여부 반환 C언어에서 배열 내에 특정 원소가 들어있는지에 대한 정보를 확인하기 위해서는 배열, 배열 크기 그리고 찾기를 원하는 값을 input으로 받은 뒤, for문을 통해서 값 일치 여부를 일일이 확인하는 식으로 구현해야 합니다. 정수 배열 arr에 대하여 val 값의 여부를 찾는 isin 함수의 구현 예시는 다음과 같습니다. // input : 배열 arr, 배열 크기 size 그리고 찾을 값 val int isin(int* arr, int size, int val)..

C & C++ 2022.08.14

[C언어/C++] n제곱, n제곱근 구하기 방법 : pow() 함수

C언어, C++의 pow 함수 사용법 예제 C언어와 C++에서 n제곱, n제곱근 형태를 나타낼 수 있는 pow 함수의 사용 방법에 대하여 정리해보도록 하겠습니다. 참고로, pow 함수를 사용하기 위해서는 C언어에서는 , C++에서는 헤더 파일을 포함시켜 주어야 합니다. n제곱 표현 pow(밑, 지수) 형태로 n제곱의 값을 반환받을 수 있습니다. 여기서 결과는 기본적으로 double 자료형으로 반환됨에 유의해주세요. #include #include int main() { printf("%.2f\n", pow(2, 3)); // 2의 3제곱 -> 8.00 printf("%.4f\n", pow(0.5, 4)); // 0.5의 4제곱 -> 0.0625 printf("%.2f\n", pow(-1, 5)); // ..

C & C++ 2022.07.06

[C++] 문자열 string vs char 배열 선언 방식 비교

C++ 문자열 string vs char array 차이 비교 예제 C++에서 문자열을 string으로 선언하는 경우와 char 배열로 선언하는 경우의 예시 코드를 토대로 두 경우의 차이를 비교해보도록 하겠습니다. string 선언 방식의 문자열 C++에서는 헤더 파일을 포함하게 된다면 string 타입으로 문자열을 선언하여 매우 편리하게 다룰 수 있게 됩니다. 해당 타입으로 문자열을 선언 뒤, 일부 글자를 수정해보고 문자열의 길이를 출력해보는 예시 코드는 아래와 같습니다. #include #include using namespace std; int main() { // 문자열 선언 string a = "hello!\n"; cout

C & C++ 2022.06.13

[C언어] 한글 입력/출력 및 유니코드 값 확인 방법(wchar_t 활용)

C언어 한국어 입출력, Unicode 값 추출 C언어에서 wchar_t 자료형을 활용하여 한글을 출력하는 방법과 한글 input을 받는 방법을 살펴보고, 원하는 글자의 유니코드 값을 확인하는 법에 대해서도 다루어보겠습니다. C언어에서 한글 선언 및 출력 방법 C언어에서 한글 객체 및 한국어가 포함된 배열 선언과 출력 시의 유의 사항들은 다음과 같습니다. 1. 한글 객체 혹은 배열 선언은 wchar.h 모듈에 포함된 wchar_t 자료형을 사용하셔야 합니다. 2. wchar_t 배열 자료형 선언 및 출력 시에는 문자열처럼 쌍따옴표(" ")로 감싸는 것은 동일하나, 앞에 L을 붙여 L" " 형태로 감싸주셔야 한다는 점에 유의해주셔야 합니다. (마찬가지로 1글자 객체의 경우에는 ' ' 대신 L' ' 형태로 감..

C & C++ 2022.06.12

[C언어] 정수 배열 및 문자열에서 중복 원소 찾기, 중복 제거 방법

C언어 배열 중복 탐색 및 제거 예제 C언어의 정수가 저장된 배열 혹은 문자열에서 2번 이상 등장한 값들의 목록을 찾는 방법과 중복을 제거하여 고유값만 남기는 방법에 대해서 다루어보도록 하겠습니다. 숫자(정수) 배열 내 중복 원소 찾기 가정 : 배열 a 내에는 0~n까지의 범위 내에서 정수가 등장할 수 있습니다. 풀이법 : n+1 사이즈의 등장 횟수 배열 check를 선언 후, a 배열의 원소를 순회하며 각 인덱스에 해당 숫자의 등장 횟수를 카운팅하고, 2 이상인 인덱스들만을 모아서 반환합니다. 0~4 범위에서 정수가 등장할 수 있는 경우의 간단한 예제에 대한 원리는 다음 그림처럼 표현할 수 있습니다. 해당 예제의 실제 C언어 구현 코드는 아래와 같습니다.(각 줄 코드의 설명은 주석을 참고하세요!) #i..

C & C++ 2022.06.06

[C언어] 구조체 struct 선언, 멤버 변수 할당 및 접근 방법

C언어 구조체 선언 및 멤버 다루기 C언어에서 struct를 통한 구조체 객체를 선언해보고 구조체 내 멤버 변수를 할당하고 접근하는 방법에 대해서 살펴보도록 하겠습니다. 구조체란? 먼저, 구조체란 객체들이 특정 종류의 속성을 공통적으로 보유할 때, 해당 속성들을 객체 내에 종속시켜 한 묶음 단위의 형태로 선언하는 객체를 의미합니다. 예를 들어, '책'이라는 객체는 공통적으로 저자, 제목, 가격, 페이지 수 등의 속성을 공유합니다. 따라서, 책이라는 객체를 선언할 때 위의 속성들을 묶어서 한 단위처럼 취급한다면 가장 비싼 책을 뽑거나, 특정 저자의 책 제목 등을 가져올 때 유용하게 사용할 수 있을 것입니다. 구조체 struct 선언 방법, 멤버 변수란? 이름, 가격 및 카테고리 정보를 가지는 '상품'이라는..

C & C++ 2022.05.22

C언어 함수 선언 방법 경우의 수 정리(input, return 타입별)

C언어 function 선언 방법 예제 C언어에서 함수를 선언하는 방법을 input 자료와 return되는 자료의 유형에 따라 분류하여 정리해보도록 하겠습니다. 기본적으로 C언어 함수 선언 코드의 틀은 다음과 같이 구성됩니다. 반환자료형 함수이름(input1자료형 input1이름, input2자료형 input2이름, ...){ ~함수 코드~ return 반환값; } 이제 반환자료형과 input자료형의 유형에따라 함수 선언 방법의 예시를 살펴보겠습니다. 1. input과 return 모두 없는 경우 가장 간단한 경우로, input 자료 없이 호출되고 반환 값도 없는 경우입니다. 반환자료형은 void로 선언하며, input 칸은 비워도되고, void로 설정해도 무관합니다. return 부분은 생략해도 좋고,..

C & C++ 2022.05.18
반응형