본문 바로가기

공부69

[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] 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.
[C] 문자열, wchar_t [C] 문자열, wchar_t - 차이 이해 wchar_t szWChar[10] = L"abcdef"; const wchar_t* pChar = L"abcdef"; 이 두 구문의 차이를 이해할 수 있어야 한다. 차이점에 대해 한번 생각해보자. - wchar_t 이란? wchar_t는 wide character(와이드 문자)를 저장하기 위한 2바이트 자료형이다. wchar_t 문자와 문자열은 앞에 L을 붙여 표현한다. 문자열의 요소 한 칸당 2바이트를 차지한다는 뜻이다. 문자열은 주소 값을 뜻한다. 그렇기 때문에 포인트로도 갈 수 있다. wchar_t 문자열은 w가 붙은 함수를 사용한다. -> #include 헤더 파일 추가 - 왜 지금 wchar_t를 쓰고 있는가? char은 멀티 바이트로 가변 길이다... 2022. 1. 9.