구조체 포인터
구조체를 가리키는 포인터로서 일반적인 포인터의 사용 방법이 비슷하지만, 구조체 멤버에 접근할 때는 '->'를 사용해야 한다
(*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;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 27강)++ &연산자로 구조체(struct)포인터에 구조체 변수 할당하기 (0) | 2020.11.16 |
---|---|
C언어 27강)+ 구조체(struct)의 멤버가 포인터 일 때, 구조체 포인터 변수 선언(동적메모리할당) (0) | 2020.11.15 |
C언어 26강) 구조체(struct) 기본개념 및 초기화 (0) | 2020.11.15 |
C언어 25강-1) 문자열 비교하기 strcmp 함수 (0) | 2020.11.14 |
C언어 25강) 문자열 길이 구하기 strlen함수 (0) | 2020.11.14 |