프로그래밍 언어/C

C언어 27강) 구조체(struct) 포인터 기본

happy_life 2020. 11. 15. 15:42

구조체 포인터

 

구조체를 가리키는 포인터로서 일반적인 포인터의 사용 방법이 비슷하지만,  구조체 멤버에 접근할 때는 '->'를 사용해야 한다

 

(*p1). name = p1 -> name

 

▲매번 *과 ( )를 사용하기 불편하기 때문에 ->를 사용하는 것이다.

 

●malloc 함수를 이용한 구조체 포인터 사용 코드 예제

#define _CRT_SECURE_NO_WARNINGS    // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일
#include <stdlib.h>    // malloc, free 함수가 선언된 헤더 파일

struct sample {    // 구조체 정의

    char name[20];        // 구조체 멤버 1
    int age;              // 구조체 멤버 2
   
};

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

    // 화살표 연산자로 구조체 멤버에 접근할 수 있음

    strcpy(p1->name, "홍길동"); //strcpy를 활용해 구조체 멤버 name에 문자열 저장
    p1->age = 20;
    

  
    printf("이름: %s\n", p1->name);       // 홍길동
    printf("이름: %s\n", (*p1).name);       // 홍길동
    printf("나이: %d\n", p1->age);        // 20
    printf("나이: %d\n", (*p1).age);        // 20
    

    free(p1);    // 동적 메모리 해제

    return 0;
}

결괏값