본문 바로가기

C9

[C] 가변 배열 (malloc) [C] 가변 배열 (malloc) (update) 2022.03.10 코드에 오타가 많아 수정했습니다. 그동안 배웠던 배열은 크기가 고정이었다. int arr[10] = {}; // 크기 10개 짜리 배열. 이건 가능할까? //1번 경우 int a=100; int arr[a] = {}; //2번 경우 int iInput = 0; scanf_s("%d", &a); int arr[a] = {}; // 지역변수인데 실행이전 컴파일러가 값을 확정할 수 없다. // 프로그램을 실행시켜봐야 아는 자료형이 어디 있겠느냐~ 배열 개수를 선언할 때에는 변수를 사용할 수 없다. 가변 배열을 만들기 위해서는 힙 메모리 영역을 사용할 수밖에 없다. - 가변 배열 만들기 가변 배열을 할 수 있는 자료형을 분할 구현을 해서 만든.. 2022. 1. 10.
[C] 동적 할당 malloc( ); [C] 동적 할당 malloc( ); 동적 할당을 배우기 앞서 이때까지 우리가 배운 변수들의 메모리 영역을 살펴보자. 메모리 영역 스택 데이터 ROM 힙 영역(동적 할당) 변수 지역 변수 (스택 영역) 전역 변수, 정적 변수, 외부 변수 (데이터 영역) 변수, 포인터가 미리 선언된 것이 아닌, 프로그램이 실행이 되면 생기는 걸 만들고 싶다! - 동적 할당이란? 프로그램 실행 도중에 내가 원하는 만큼의 메모리를 요청할 수 있는 것. 이때 사용하는 메모리 영역은 힙 영역이다. 그곳에 내가 원하는 만큼의 크기의 메모리를 받고 주소를 받는다. 거기를 어떻게 사용할지는 포인터를 통해 한다. 같은 메모리 공간이어도 포인터 타입에 따라 바뀜. int main() { int* pInt = (int*)malloc(100.. 2022. 1. 10.
[C] 구조체 포인터 [C] 구조체 포인터 typedef struct _tagMyST { int a; float f; }MYST; int main() { MYST s = { }; MYST* pST = &s; pST + 1 하면 8바이트씩 간다. (*pST).a = 100; //a에 100을 넣겠다. (*pST).f = 3.14f; pST ->a = 100; //역참조를 쉽게 표현 pST ->f = 3.14f; return 0; } 구조체 a안에 있는 변수는 변수가 아니다. MYST가 자료형이고 a는 변수가 아니라 MYST의 파트(멤버)를 지칭하는 부분이다. - 화살표 ( ->) 사용 구조체가 포인트의 멤버에 접근할 때 사용하는 화살표 연산자이다. 위의 코드에서, (*pST).a = 100; //구조체 포인터를 역참조한 뒤 ... 2022. 1. 10.
[C] StcCmp 함수 만들기(문자열이 같은지 비교 함수) [C] StcCmp 함수 만들기(문자열이 같은지 비교 함수) 같은 기능을 구현하더라도 사람마다 코드를 짜는 법이 천차만별이다. 그 예시가 될 수 있을 것 같다. 문자열이 같은지 비교하는 함수를 만들었다. 두 문자열을 받고 먼저 받은 문자열과 두 번째 받은 문자열이 같을 경우는 0, 다를 경우에는 알파벳 abcd순으로 더 앞에 있는 알파벳을 빠르게 봐서 더 짧은 경우를 더 우선순위 앞으로 둔다. 첫 번째 문자열이 우선순위가 더 빠를 경우는 -1, 두 문자열이 같을 경우에는 0, 두 번째 문자열이 우선순위가 더 빠를 경우는 1로 본다. - 1번 StrCmp 코드 int StrCmp(const wchar_t _left, const wchar_t* _right) { int leftLen = wcslen(_lef.. 2022. 1. 10.
[C] wchar_t 함수 ( wcslen( ), wcscat_s( ) ) [C] wchar_ 함수 ( wcslen( ), wcscat_s( ) ) 이번 포스팅에서는 문자열 길이를 알려주는 함수와 2개의 문자열을 이어 붙여주는 함수에 대해 알아보고, 직접 구현해보는 것까지 해보겠다. #include 을 추가하는 것을 잊지 말자. - wcslen( ) 문자열 길이를 알려주는 함수이다. wchar_t szName[10] = L"Raimond"; int iLen = wcslen(szName); iLen을 출력하면 szName의 문자열의 개수를 알 수 있다. - 내가 문자열 길이를 알려주는 함수 만들기! unsigned int GetLength(const wchar_t* _pStr) { int i = 0; // 문자 개수 체크 용도 while(true) { wchar_t c = _pS.. 2022. 1. 9.