728x90
C언어에서 구조체는 여러 데이터를 하나의 단위로 묶는 방법입니다. 구조체에 접근하는 방법에는 두 가지가 있습니다: 일반 구조체 변수를 통해 접근하는 방법과, 구조체 포인터를 통해 접근하는 방법입니다.
1. 일반 구조체 변수로 멤버에 접근
- 구조체 변수가 일반 변수일 경우, 점 연산자(.)를 사용해 구조체의 멤버에 접근합니다.
예시:
#include <stdio.h>
typedef struct Data {
char c;
int num;
} Data;
int main() {
Data d; // 일반 구조체 변수 선언
d.num = 10; // 점(.) 연산자를 사용해 멤버에 접근
printf("%d\n", d.num); // 10 출력
return 0;
}
- d.num: 구조체 변수 d의 num 멤버에 점(.) 연산자로 접근합니다.
2. 구조체 포인터로 멤버에 접근
- 구조체 변수가 포인터일 경우, 화살표 연산자(->)를 사용해 구조체의 멤버에 접근합니다.
- 구조체 포인터는 구조체의 메모리 주소를 가리키며, 포인터를 통해 구조체 멤버를 접근할 때 -> 연산자를 사용합니다.
예시:
#include <stdio.h>
#include <stdlib.h>
typedef struct Data {
char c;
int *numPtr;
} Data;
int main() {
int num = 10;
Data *d2 = malloc(sizeof(Data)); // 구조체 포인터 동적 할당
d2->numPtr = # // 화살표(->) 연산자를 사용해 멤버에 접근
printf("%d\n", *d2->numPtr); // 10 출력
free(d2); // 동적 할당 메모리 해제
return 0;
}
- d2->numPtr: 구조체 포인터 d2가 가리키는 구조체의 numPtr 멤버에 화살표(->) 연산자로 접근합니다.
연산자의 차이:
- 점 연산자(.): 일반 구조체 변수에 대해 멤버에 접근할 때 사용합니다.
- 화살표 연산자(->): 구조체 포인터에 대해 멤버에 접근할 때 사용합니다.
구조체 멤버 접근 요약:
- 일반 구조체 변수:
- 멤버 접근 시 점 연산자(.) 사용.
- 예: d.num
- 구조체 포인터:
- 멤버 접근 시 화살표 연산자(->) 사용.
- 예: d2->numPtr
예제 정리:
#include <stdio.h>
#include <stdlib.h>
typedef struct Data {
char c;
int *numPtr;
} Data;
int main() {
int num = 10;
Data d1; // 일반 구조체 변수
Data *d2 = malloc(sizeof(Data)); // 구조체 포인터 동적 할당
d1.numPtr = # // 점(.) 연산자로 멤버 접근
d2->numPtr = # // 화살표(->) 연산자로 멤버 접근
printf("%d\n", *d1.numPtr); // 10 출력
printf("%d\n", *d2->numPtr); // 10 출력
free(d2); // 동적 메모리 해제
return 0;
}
출력 결과:
10
10
요약:
- 점(.): 일반 구조체 변수를 통해 멤버에 접근할 때 사용.
- 화살표(->): 구조체 포인터를 통해 멤버에 접근할 때 사용.
728x90
'Category > 정보처리기사' 카테고리의 다른 글
서버 접근 통제 유형 DAC(임의 접근 통제), MAC(강제 접근 통제), RBAC(역할 기반 접근 통제) 알아보기 (1) | 2024.10.09 |
---|---|
C 언어 구조체(Structure)란? (1) | 2024.10.09 |
RIP(Routing Information Protocol) 거리 벡터 라우팅 프로토콜 알아보기 (1) | 2024.10.09 |
클라우드 컴퓨팅 서비스 모델(PaaS, SaaS, IaaS)이란? (0) | 2024.10.09 |
완전수(Perfect Number)란? 6, 28, 496, 8128, ... (0) | 2024.10.08 |