c언어 6

C언어 구조체 연결 리스트 - 공부하는 도비

연결 리스트란, 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조입니다. 아래 그림처럼 Link 필드(포인터 필드)에 다음이나 이전 노드의 주소 값을 저장하여 각 노드를 연결합니다. 오늘은 구조체를 사용하여 연결 리스트를 구현해보겠습니다. C언어에서 연결리스트의 노드 종류는 크게 머리 노드와 일반 노드로 나뉩니다. - 머리노드(head node) : 단일 연결 리스트의 기준점이며, 첫 번째 노드를 가리키는 용도로 사용됩니다. 이 노드엔 데이터를 저장하지 않습니다. - 일반 노드 : 연결 리스트에서 데이터가 저장되는 실제 노드를 의미합니다. 맨 마지막 노드의 Link 필드엔 NULL 값이 들어갑니다. 구조체를 이용하여 연결 리스트 구현 #include #inc..

C Programming 2022.11.23

C언어 포인터 기초 (필요성) - 공부하는 도비

저번 피드에서 C언어의 포인터에 대해 간단히 알아보았습니다. 2022.10.13 - [C언어] - [C언어] 포인터 기초 (선언) - 공부하는 도비 [C언어] 포인터 기초 (선언) - 공부하는 도비 오늘은 모두가 어려워하는 포인터에 대해서 알아볼게요. C언어를 공부하면서 학생들이 손 놓는 부분이 포인터를 배울 때라고 생각해요. 그래서 기초부터 정리해두려고 합니다. 우리가 변수를 yang-wistory1009.tistory.com 오늘은 포인터가 대체 왜 필요한지 설명해보려고 합니다. 우선 아래 두 가지 코드를 비교해볼게요. 두 코드 모두 처음 선언한 value 변수에 100을 더하는 코드이고, 차이는 함수의 인자에 값을 넘겨주는 call by value 함수이냐 아니면 주소 값을 넘겨주는 call by ..

C Programming 2022.10.13

C언어 행렬 곱셈 - 공부하는 도비

아래와 같은 두 행렬의 곱을 계산해보도록 하자. 우선, 행렬의 곱이 형성되기 위해선, 1번 행렬의 열 개수와 2번 행렬의 행 개수가 동일해야 한다. 예제에서는, mat1 = (2, 3) 행렬, mat2 = (3, 2) 행렬이기 때문에 곱 결과는 (2, 2) 행렬이 만들어지게 된다. 행렬의 자세한 내용은 아래 위키를 참고하면 좋을 거 같다. https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88 행렬 곱셈 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 행렬 곱셈을 위해선 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야한다. 곱셈의 결과 새롭게 만들어진 행렬은 첫째 행렬의 행 갯수와 둘째 행렬의 열 ko.wiki..

C Programming 2022.10.03

C언어 공백 포함 문자열 입력 받기 (scanf, gets) - 공부하는 도비

C를 사용하여 문자열을 입력받을 때, 무심코 공백이 포함된 문장을 입력하다가 엔터나 스페이스바가 입력된 기준으로 그 앞까지만 배열에 저장되는 걸 종종 보게 된다. 이러한 코드를 실행시켜 다음과 같이 입력을 하면, 원하는 결과가 출력되지 않는 걸 확인할 수 있다. 따라서, 우리는 배열에 공백을 포함하여 입력받고 싶을 땐 아래와 같은 2가지 방법을 사용하면 된다. 1. scanf 사용 시 [^\n] 추가 2. gets 함수 사용 gets 함수는 기본적으로 공백을 포함해서 입력을 받는 함수이다. 물론 안정성 때문에 gets 함수 사용이 권장되지는 않으니 1번 방법을 사용하여, 공백을 포함한 문자열을 입력받으시면 됩니다.

C Programming 2022.10.03

C언어 입력한 년도에 따른 달력 출력 - 공부하는 도비

오늘은 입력한 년도에 따른 달력을 출력해보겠습니다. 달력 출력하기를 위해선, 윤년/평년 계산과 1월 1일이 무슨 요일로 시작되는지 알아야 합니다. 코드는 다음과 같습니다. - 함수 LeapYear은 윤년/ 평년 판단 함수입니다. - GetStart는 입력된 년도의 1월 1일이 무슨 요일로 시작되는지 알아내는 함수입니다. - PrintMonth는 달력을 출력하는 함수입니다. #define _CRT_SECURE_NO_WARNINGS #include int LeapYear(int year); void PrintMonth(int check, int start_point); int GetStart(int year); int main() { int input_year; scanf("%d", &input_year);..

C Programming 2022.09.30