본문 바로가기
Language/C언어

C013_구조체 포인터 사용하기

by OdOp 관리자 2023. 9. 15.
SMALL

들어가기에 앞서서 포인터에 대해 설명은 전에 포스팅한 것을 참고해 주시길 바라겠습니다.

https://hig0617.tistory.com/15

 

구조체 포인터

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>  
#include <string.h>  //strcpy 함수가 선언된 헤더 파일
#include <stdlib.h>  //malloc, free 함수가 선언된 헤더 파일

typedef struct Person {
    char name[20];
    int age;
    char address[100];
} Person;

int main()
{
    Person* p1 = malloc(sizeof(Person));  //구조체 포인터 선언, 메모리 할당

    //화살표 연산자로 구조체 멤버에 접근하여 값 할당
    strcpy(p1->name, "홍길동");
    p1->age = 30;
    strcpy(p1->address, "서울시 용산구 한남동");
    //화살표 연산자로 구조체 멤버에 접근하여 값 출력
    printf("이름: %s\n", p1->name);
    printf("나이: %d\n", p1->age);
    printf("주소: %s\n", p1->address);
    free(p1);  //동적 메모리 해제 
    return 0;
}

구조체 포인터는 동적할당을 잘해주어야 합니다. 

우선 사용할 메모리 공간을 malloc을 통하여서 할당을 해줍니다. 

저희는 Person 구조체의 크기만큼의 공간이 필요하기 때문에 malloc(sizeof(Person))을 사용하여 할당을 해주었습니다. 

구조체 포인터는 일반 구조체와 접근 방식이 다릅니다. 

일반 구조체는 '.'으로 접근을 했다면 포인터 구조체는 '->'화살표로 구조체 변수에 접근해야 합니다. 

그 외에는 일반 구조체와 동일합니다. 

LIST

'Language > C언어' 카테고리의 다른 글

C015_함수에 대해  (3) 2023.09.17
C014_구조체 정렬하기  (0) 2023.09.16
C012_struct, 구조체에 대해  (0) 2023.09.14
C011_배열 사용하기  (0) 2023.09.13
C010_malloc사용하기  (0) 2023.09.12