본문 바로가기

전공공부35

[C] 11. C언어 동적할당(동적메모리) 동적할당은 말 그대로 프로그램 실행 중 메모리를 할당하는 것을 말합니다. 즉, 원하는 만큼 배열을 선언하거나 특정변수를 필요 시에만 선언할 수 있습니다. 효율적인 메모리 관리가 필요한 경우 자주 사용하게 됩니다. 동적할당은 2가지 함수가 필요합니다. 할당하는 함수, 반납(해제)하는 함수입니다. malloc(): 지정된 바이트 수만큼의 메모리를 할당하고 할당된 메모리의 시작 주소를 반환합니다. free(): 할당된 메모리를 해제하는 함수로, 할당된 메모리를 해제하여 다시 사용할 수 있도록 합니다. 아래 예시에는 작성하지 않았는데 malloc함수를 사용하고 보통 반환된 값이 NULL인지 확인합니다. 그 이유는 NULL인 경우 메모리 할당에 실패한 경우라 예외처리 등을 시행해야 합니다. 동적 메모리 할당은 배.. 2024. 2. 28.
[C] 11. C언어 공용체 및 열거형 공용체(union) 구조체와 매우 비슷하지만 메모리 구성에서 차이가 발생합니다. 공용체는 가장 큰 멤버변수의 크기만큼 메모리를 할당한 후 그것을 공유하게 됩니다. 구조체와 동일하게 이름(변수명)을 작성하고 중괄호안에 멤버변수를 선언합니다. 구조체와 다르게 메모리를 공유하는만큼 한 번에 하나의 멤버변수에만 접근이 가능합니다. 공용체는 메모리를 절약하여 효율적으로 관리할 수 있지만 사용 시 상당한 주의가 필요합니다! 열거형(enum) 열거형은 관련된 상수들을 그룹화 하여 코드를 좀 더 읽기 쉽게 만들어줍니다. 코드를 읽기 쉽게 만든다는 것은 수정도 쉽게 만들 수 있습니다. // Q. 내가 쓴 코드인데 왜 읽기 쉬워야하죠? // A1. 대학교에서만 프로그램 수업을 들어도 팀프로젝트를 꼭 하게됩니다^^ // A.. 2024. 2. 26.
[C] 10. C언어 구조체 C언어 구조체에 관하여 알아보겠습니다. 구조체란 원하는 자료형 등 다양한 변수를 묶어서 새로운 자료형을 정의한다고 생각하시면 됩니다. 즉, 강아지의 이름, 나이, 몸무게를 각각의 변수가 아닌, 하나의 이름으로 저장이 필요할 때 사용합니다. 구조체의 키워드는 'struct'이며 아래와 같이 "struct 이름"을 사용하고 중괄호 안에 원하는 멤버변수를 선언해줍니다. 멤버변수란 그 구조체를 구성하는 변수입니다. 아래 예시를 직접 실행해보시기 바라며 구조체 멤버변수의 접근은 .(dot 연산자를 활용합니다.) 선언을 할때는 struct dog 등으로 구조체 키워드를 함께 사용해야 하거나, typedef를 사용하여 키워드를 생략할 수 있습니다. 위 자료에서 Padding Bit란 사용한 변수는 20byte, 4b.. 2024. 2. 25.
[C] 9. C언어 다차원 배열 및 다중 포인터 다차원배열을 인덱스를 2개 이상 사용하여 접근하는 배열입니다. 기존에 다룬 배열은 1개의 열이지만 다차원 배열은 여러 행과 열로 구성할 수 있습니다. 간단하게 2차원 배열을 보면 행렬의 형태를 띄고 있고 그 이상의 배열도 사용 가능합니다. 이해하기 어려우면 표를 그려보면 조금 더 사용하기 쉬울 것입니다. 다차원 배열은 이미지 처리분야에서 3차원배열이 주로 사용되며 과학 및 엔지니어링 분야에서 많이 사용됩니다. 다중포인터는 포인터를 가르키는 포인터로 연속적으로 사용되는 포인터를 말합니다. 하나의 포인터는 특정 변수의 메모리만을 가리키지만 다중포인터는 또 그것의 메모리를 가리킵니다. 사용하는 이유는 위 그림에서 보이듯이 복작한 데이터구조를 사용하는 경우입니다. 2차원배열은 포인터의 배열로 생각할 수 있고 리.. 2024. 2. 24.