본문 바로가기

c & c++63

연결형 리스트(Linked List) LinkedList.h LinkedList.cpp #include "LinkedList.h" #include //연결형 리스트 초기화 함수 구현 void initList(stLinkedList* pList) { pList->pHeadNode = nullptr; pList->count = 0; } //연결형 리스트 데이터 추가 함수 구현 void PushBack(stLinkedList* pList, int intData) { //stNode 포인터 pNode 동적 할당 stNode* pNode = (stNode*)malloc(sizeof(stNode)); //pNode의 멤버 iData값은 매개변수 intData; pNode->iData = intData; //PushBack이기 때문에 pNode 의 다음.. 2022. 8. 7.
함수 포인터 어떠한 하나의 함수안에서 다른 함수를 인자로 받아 사용하는 방법 ex) 정렬 함수 안에서 특정 정렬 함수를 인자로 받아 사용함 버블정렬 함수 함수선언 함수호출 및 결과 2022. 8. 5.
가변 배열 가변배열을 하기 위해서는 동적할당을 이용해야한다. main.cpp Arr.h 파일 Arr.cpp 2022. 8. 1.
Call By Value, Pointer, Reference 1.Call by value (값에 의한 호출) main 함수에서 a 와 b의 값이 swap 되지 않음 2. Call by Pointer(address) 메인 함수에서도 swap이 이루어짐 ( 해당하는 변수의 주소값에 접근해서 참조하는 값을 바꾸기 때문, 원격조종) 3. Call by Reference 메인 함수에 선언되 a, b 변수에 m, n값을 참조해서 swap이 이루어짐 2022. 7. 28.
정수형 자료형 0 1 1 1 1 1 1 1 ==> 127 +1 0 0 0 0 0 0 1 ==> -127 ----------------------- 0 컴퓨터에서 음수는 양수에 더했을때 0이나오는 수로 생각한다. ex) 5 + (-5) = 0 10 + (-10) = 0 //음의 정수 찾기 (2의 보수법) //대응되는 양수의 부호를 반전후 , 1을 더한다 2022. 7. 28.
동적할당 calloc 함수 이용 #include #include int main(void) { int i , n; printf("처리할 데이터 수는 : "); scanf("%d", &n); int* iPtr = (int*)calloc(n, sizeof(int)); //malloc함수 반환값은 void //사용자가 원하는 반환타입으로 설정 if(iPtr == '\0') //iPtr이 null 이면 할당 실패! { puts("동적 할당 실패!!"); } printf("\n %d개의 정수 입력 \n\n", n); for(i = 0 ; i < n; i++) { printf("[%d]번 째 정수 : ", i); scanf("%d", iPtr+i); //포인터 자체가 주소값을 }//담고있는 변수임으로 하나씩 더해줌 printf("\n %d의 정수.. 2022. 7. 27.
동적할당 malloc함수 이용 #include #include int main(void) { int i , n; printf("처리할 데이터 수는 : "); scanf("%d", &n); int* iPtr = (int*)malloc(sizeof(int)); //malloc함수 반환값은 void //사용자가 원하는 반환타입으로 설정 if(iPtr == '\0') //iPtr이 null 이면 할당 실패! { puts("동적 할당 실패!!"); } printf("\n %d개의 정수 입력 \n\n", n); for(i = 0 ; i < n; i++) { printf("[%d]번 째 정수 : ", i); scanf("%d", iPtr+i); //포인터 자체가 주소값을 }//담고있는 변수임으로 하나씩 더해줌 printf("\n %d의 정수 출력.. 2022. 7. 27.
동적할당(malloc) 프로그램이 실행도중에 필요시에 동적으로 사용이 가능해야할때 사용 int* ptr = (int*)malloc(100); // 힙 영역에 100byte 할당 malloc(); 반환타입이 void //사용자가 사용하고자 하는 반환타입으로 그때그때 알맞게 사용하기 위함 동적할당 특징 1. 런타임 중에 대응 가능 2. 사용자가 직접 관리해야함(해제) #include #include //메모리 영역 // 1. 스택(stack) // 2. 힙(heap) // 3. 데이터(DATA) // 4. ROM(읽기 전용) int main(void) { int iPut = 0; scanf_s("%d ", &iPut); int* pInt = nullptr; //동적 할당 if (100 == iPut) { pInt = (int*)m.. 2022. 7. 26.
문자열 함수구현 #include #include #include #include void strCat(wchar_t* origin, unsigned int n, const wchar_t* add); unsigned int GetLength(const wchar_t* _szN); int strCmpp(const wchar_t* a, const wchar_t* b); int main(void) { char szTest[10] = "abc한글"; wchar_t szTestW[10] = L"abc한글"; wchar_t szName[20] = L"Raimond"; //문자열 문자 개수 세기 함수 GetLength(szName); //문자열 이어 붙이기 함수 strCat(szName, 20, L"abcedfg"); //문자열 크기.. 2022. 7. 25.
문자열 포인터2 한글을 표현할 때 2byte가 필요한데 멀티바이튼 "utf-8" 호환성 문제로 현재 쓰지 않음 와이드바이트(유니코드) wchar_t = 모든문자를 2byte로 표현 2022. 7. 25.
문자열 포인터1 #include //메모리 영역 //1. 데이터 영역 //2. 힙 영역 //3. 스택 영역 //4. ROM (읽기 전용) int main(void) { //1. 1byte 문자 자료형 char unsigned 일때 0 ~ 255만큼 표현가능 char c = 'a'; //2. 2byte 문자 자료형 wchar_t 2byte 이기 때문에 훨씬 많은 문자를 표현가능 wchar_t cc = L'a'; //L자 사용 char szChar[10] = "abcedf"; // [a, b, c, d, e, f, '\0'] wchar_t szWct[10] = {97, 98, 99, 100, 101, 102}; // [a, b, c, d, e, f, '\0'] short arrShort[10] = { 97, 98, 99, .. 2022. 7. 25.
문자 #include int main(void) { char c = 1;// signed char = 0 ~ 127 까지의 정수를 표현할수 있다. char d = '1'; // 1 != '1' 1과 '1'은 다르다. 1은 정수 1이고 , '1'은 ASCII코드 49값 char e = 128; // signed char = 0 ~ 127 까지 표현 가능하므로 128은 overflow로 -128 char f = 'a';// 'a' ASCII코드 97을 나타냄 printf("%d ", c); // 1 printf("%d ", d); // 49 printf("%d ", e); // -128 printf("%d ", f); // 97 return 0; } 2022. 7. 25.