C++ 28

[C/C++] strlen 함수, 문자열의 길이

문자열(string)이란메모리에 바이트 단위로 연속적으로 저장되어 있는 문자들을 말한다두 가지 방법으로 문자열을 처리한다첫 번째는 char형의 배열을 이용한 방법이고 string 클래스 라이브러리를 이용한 방법이 있다char형의 배열을 이용할 때 문자열은 반드시 마지막에 '\0' 널 문자를 포함한다 strlen(string) strlen(string) 을 이용하여 문자열의 길이 값을 반환할 수 있다이를 사용하기 위해서는 cstring 헤더 파일을 지시해야 한다#include strlen() 함수는 배열의 전체 크기가 아니라 배열에 저장된 문자열의 크기를 반환한다 char name[15] = "C++Basic" 일 때C + + B a s i c \0name 의 문자열의 길이는 15도 아니고 9도 아닌 8이다

[C/C++] fflush 함수

fflush 함수함수의 인자에 해당하는 입출력 버퍼를 지울 때 사용한다내용을 입력하고 ENTER 를 입력할 때 '\n' 는 아래 그림처럼 버퍼에 남게 된다이러한 경우를 없애기 위해서 fflush(stdin) 명령어를 사용한다보통 반복문 끝에 사용한다 단, fflush 는 버퍼에 있는 데이터를 그냥 지우는 것이 아니라 출력하고자 하는 곳으로 전송한다입력버퍼를 비우기 위해서는 버퍼에 있는 데이터를 읽어들이면 된다 void insert_line(LinkedListType *buffer) { int position; char line[MAX_CHAR_PER_LINE]; element p; printf("입력행번호를 입력하세요: \n"); scanf("%d", &position); printf("내용을 입력하세요..

[C/C++] 동적 메모리 할당 malloc

동적 메모리 할당?동적 메모리 할당(dynamic memory allocation)이란프로그램이 실행 도중에 동적으로 메모리를 할당받는 것을 말한다 이와 반대로 정적 메모리 할당이란 개념도 있다프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는다정적으로 할당받으면 메모리의 크기는 프로그램의 실행 도중에 크기가 변경될 수 없다int number = 10; 과 같은 경우이다 동적 메모리 할당의 방법은 다음과 같다 #include int *pi; pi = (int *)malloc(sizeof(int)); ... free(pi); malloc.h 헤더파일을 지시문으로 불러오고malloc(int size) 함수를 사용하여 size 바이트(위 경우 4 바이트) 만큼의 메모리 블록을 할당한다새로운 메모리 ..

[C/C++] 포인터 pointer

포인터?포인터(Pointer)는 다른 변수의 주소를 가리킨다포인터 변수를 선언하기 위해서는 * 연산자를 사용하여 선언한다포인터 변수에 다른 변수의 주소를 대입하기 위해서는 & 연산자를 사용한다 char a = 'A'; char *p; p = &a; 'A' 라는 값을 가진 char형 변수의 주소는 26 이다char형 변수의 주소를 가리키는 포인터는 26 의 값을 가지게 된다 *p = 'A' a = 'A'&a = 26 p = 26 여기서 *p 의 값을 바꾸게 되면 어떻게 될까? *p = 'B'; 위 코드를 실행하면 a 의 값이 'B' 로 바뀌게 된다*p 와 변수 a 는 동일한 객체(상자)를 가리킨다즉, *p 와 a 는 완전히 동일하다동일한 객체를 가리키기 때문에 한 쪽의 값을 바꾸게 되면 다른 한 쪽의 값도..

[C/C++] 구조체 struct

구조체란? C언어 문법을 배울 때 배열에 대해서 공부한 기억이 있을 것이다배열은 같은 타입의 변수들의 집합이라고 할 수 있다그렇다면 타입이 다른 변수들은 어떻게 묶을까? 구조체(structure)는 다른 타입의 변수들의 집합이라고 할 수 있다구조체를 사용하는 방법은 다음과 같다 //구조체를 정의하는 방법 struct person { char name[10]; int age; float height; ... }; //구조체 변수를 선언하는 방법 struct person a; 보시다시피 person 이라는 구조체의 내부에는char 문자열과 int형 변수 float형 변수 등 서로 다른 타입의 변수들이 묶여있음을 확인할 수 있다 그리고 typedef 를 사용하면 구조체를 아예 새로운 타입으로 선언할 수 있다 ..

[C/C++] 순환, 재귀 호출

순환(Recursion)어떤 알고리즘이나 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법 순환을 이용하는 가장 쉬운 예시인 팩토리얼을 생각해보자 3! 을 계산하기 위해선 어떻게 해야 할까? 3! = 3 * 2 * 1 이다 위 식을 다르게 표현해보자 3 * 2! 로 표현할 수도 있다 2! 는 어떻게 계산할까? 2 * 1 이다 또한 2 * 1! 로 표현할 수도 있다 즉 n! 를 계산하기 위해서는 (n - 1)! 를 계산해야하고 이를 계산하기 위해서는 (n - 2)! 를 계산해야 한다 여기서 공통점이 있다 전부 팩토리얼이라는 것이다 즉 팩토리얼을 계산하는 함수를 반복하면 계산할 수 있다 이렇게 주어진 문제를 더 작은 동일한 문제들로 분해하여 해결하는 방법을 분할 정복(divide and conqu..

728x90