본문 바로가기

c++22

[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] const, const 값 바꾸기 [C] const, const 값 바꾸기 - const란? const는 변동되지 않는 상수를 뜻한다. const int cint = 100; // cint 값을 변동하지 못한다. -value : 상수 l-value : 변수 C라는 문법이 const를 쓰면 값이 변동되는 것을 문법적으로 막아줄 뿐이지 정말로 진짜 상수처럼 값을 절대 바꿀 수 없는 것은 아니다 - Q: 그러면 const에 상수의 값을 어떻게 바꿀 수 있는가? A: 포인터로 주소로 직접 가서 값을 바꾸면 된다! const int cint = 100; pInt = (int*)&cint; *pInt = 300; printf("cint 출력: %d \n", cint); 디버깅을 하면 300이 안 나온다. 물론 값은 300으로 바뀌어 있다! cint.. 2022. 1. 4.
[C] 구조체 [C] 구조체 - 구조체란 사용자 정의 자료형 User define data type struct: 구조체라고 부른다. -typedef란 typedef: 타입을 재정의 해준다. typedef 예시 typedef int INT; 예시처럼 적을 시 INT라고 적어도 프로그램은 int라고 인식한다. (INT -> int 인식) typedef struct _tagMyST { int a; float f; } MYST; int main() { MYST t; // 이 구조체는 데이터 타입이 int 하나, float 하나 있기 때문에 8byte이다. return 0; } - C 스타일 struct _tagMyST라고 매번 쓰면 불편하니까 전체를 MYST라고 쓰겠다고 typedef을 해주어서 MYST라고 쓴다. c에서는.. 2022. 1. 2.
[C] 변수(지역 변수, 전역 변수, 정적 변수, 외부 변수) [C] 변수 (지역 변수, 전역 변수, 정적 변수, 외부 변수) 목차 변수의 종류 1. 지역 변수 2. 전역 변수 3. 정적 변수 4. 외부 변수 메모리 영역 1. 스택 영역 2. 데이터 영역 3. 읽기 전용(코드, ROM) 4. 힙 영역 1. 지역 변수 지역 변수는 스택 영역에 선언돼서 함수가 끝나면 사라진다. #include // 전역변수 int i=0; // Data 영역 int main() { // 지역변수 return 0; } int iName =0; //괄호 안에 선언된 변수(함수, 지역) { int iName = 100; iName; // 괄호 지역 안에 선언했던 iName } iName = 100; // 바깥쪽에 선언했던 iName // 지역과 지역 안에 또 지역을 만들 수 있다. // 괄.. 2022. 1. 2.