C 13

[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