2021.11.08 TIL

서승원·2021년 11월 8일
0

TIL

목록 보기
14/68

2021.11.08 TIL
Struct의 다양한 활용

  • typedef 기능
    Struct를 호출할 때 , Struct 이름 으로 다소 긴 타이핑이 필요하다.
    사진의 코드와 같이 typedef을 이용하여 짧은 단어로 줄여서 사용할 수 있다.

링크드리스트
링크드리스트는 포인터 head로부터 이어지는 데이터가 연결돼서 꼬리에 꼬리를 무는 방식으로, 데메모리의 한도 내에서 계속해서 늘어날 수 있는 구조다.

사진과 같이 코드를 짜게 되면,

다음과 같은 구조를 만들 수 있다. 게속해서 늘어날 수 있는 형태를


다음처럼 for문, while 문을 활용해 각각 만들 수 있다.
pre와 post 두 포인터를 이용해 하나의 더미struct를 만들고, post와 pre가 다음의 struct를 하나씩 가리키며 데이터를 입력하거나, free 시키거나, 대입하고 이용할 수 있다.

class 구조체

class 는 이름이 붙고, 변수와 함수를 선언할수 있는 구조체이다. 변수의 대입,연산 그리고 함수의 호출은 불가능하다.
class는 선언을 하고 class 이름으로 변수를 선언해서 인스턴스라는 문장을 대입하면 그 변수가 참조형 변수 (reference)로 지정되고 사용할 수 있게 된다.
참조형 변수를 통해 class 에서 선언된 변수명에 접근할 수 있고 대입된 참조형 변수를 통해서 class에서 선언된 함수를 호출할 수 있다.

위 코드에서 new Temp() 가 인스턴스에 해당하고
t.data 라는 참조형변수를 통해 t.add 라는 함수를 호출할 수 있게 된다.

객체지향언어


위 코드 부분에서 1,2,3으로 나뉜 부분에 대한 이해가 필요하다.
1.struct를 선언할때 data 라고하는 int 변수를 젖아하는 공간, add라는 함수 포인터를 저장하는공간을 Temp 라는 구조체에 선언하게 된다
2.Temp_add 라는 함수를 선언한다.
3. new_Temp라는 구조체 Temp 포인터를 선언하고 해당 타입의 포인터인 tmp라는 변수를 선언한다. tmp는 malloc 을 통해 메모리를 할당받고 그를통해서 add 함수포인터가 Temp_add함수를 가리키면서 1,2번 코드가 연결된다. 또한 tmp->data의 초기값을 입력해주기도 한다.
t= new_Temp(); 를 통해서 해당 구조체를 호출하게되면 메모리를 할당해 1,2번이 실체가 있는 데이터가 된다.

profile
2년차 백엔드 개발자, crimy

0개의 댓글