Home
Computer Vision Engineer's Room
Cancel

C언어로 연결 리스트 Linked List 자료구조 만들기

동적할당과 정적할당 차이 정리 (malloc, free) 함수 사용법 앞에서 동적할당 사용하는 이유와 스택을 만들어 보았는데 가장 핵심적이라고 할 수 있는 연결리스트를 동적할당으로 구현해보겠습니다. 배열을 생성하는 것보다 연결리스트는 필요한 만큼 사용하니 메모리 관리게 용의하지만 문제는 개념을 정확히 모른다면 코드를 짜기가 어렵습니다. 연결리스...

C언어로 스택 stack 자료구조 만들기

프로그래밍에서 자료를 저장하기 위한 어떤 구조를 컨테이너 구조라고 하고 리스트나 배열 역시 마찬가지로 어떤 자료를 담는 컨테이너입니다. 보통 많이 사용하는 컨테이너 자료구조는 스택, 큐, 데크(잘안씀) 등이 있는데 스택을 한번 C언어로 만들어보겠습니다. 스택을 만들기 위해서는 동적할당과 포인터의 개념을 가지고 있으셔야 합니다. 파이썬 스택을 이용한 ...

C언어에서 const를 사용하는 이유와 선언의 의미

C언어를 배우게 되면 const를 사용하는 것을 종종 볼 수 있는데 보통 있던 없던간에 동일하게 작동하는 경우도 있을 것입니다. 하지만 굳이 이런 const를 사용하는 의미가 있겠지요 코딩은 불필요한것을 싫어해서 하는건데 불필요한데 굳이 사용하는 이유가 있을 것입니다. Const를 통한 포인터 변수 선언은, 해당 포인터변수가 가리키는 대상이 변하지 ...

배열 포인터(array pointer)와 포인터 배열(pointer array) 차이 정리

C/C++에서는 메모리를 직접 제어하기 위해서 포인터를 사용합니다. 그러면서 포인터에서 파생되는 개념이 많은데 배열포인터/포인터배열도 마찬가지 입니다. 만약 본인이 C를 공부를하고 있다면 이것을 피할 수가 없으니 꼭 짚고 넘어갑시다. 1. 포인터 배열 pointer array 포인터 배열은 포인터들의 배열입니다. 즉 배열의 요소가 포인터 들로 이루어...

scanf 입력 버퍼 지우기, 초기화 하는 방법

scanf에서 변수를 받을때 &를 사용하는 이유 scanf를 사용하게 되면 변수에 입력을 받을 수 있지만 이를 반복문으로 어떤 것을 계속해서 받아야 하거나 어떤 특정한 문자가 일어나면 문제가 발생 할 수 있습니다. 이는 버퍼가 비워지지 않아서 생기는 문제입니다. 버퍼가 비워지지 않으면 사용자가 입력을 하지 않았는데 프로그램이 버퍼에 있는...

비쥬얼 스튜디오 Visual Studio C4996 scanf 에러 해결 방법

마이크로소프트 비쥬얼 스튜디오 13버전 이상에서 scanf를 그냥 사용하시면 다음과 같은 에러와 함께 컴파일러 실패를 합니다. error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _C...

동적할당과 정적할당 차이 정리 (malloc, free) 함수 사용법

C언어에서 메모리 할당을 위한 방법으로 크게 정적할당과 동적할당이 있습니다. 정적할당(Static memory allocation) 프로그램이 실행되기전에 크기가 결정 정적할당은 이미 명시적으로 메모리를 얼마나 할당할지 정해주고 가는 것입니다. int i; double d; char c; 이렇게 C언어에서 변수를 생성할때 자료형을 지정을 해...

scanf에서 변수를 받을때 &를 사용하는 이유

어쩌다가 C언어 수업을 또 듣고 있는데 (구구절절히 설명을 하자면 전기전자공학과에서 C언어 수업을 들었는데 인증안해준다고 컴공가서 또 듣고 있다 ㅋㅋㅋ) scanf를 보면서 나도 참 C 언어를 모르면서 안다고 착각하고 있다는 생각이 들어서 정리해본다. printf를 사용할때 변수를 출력하고 싶으면 %d라고 자료형을 선언을 해주고 “뒤에다가 변수 이름...