728x90
요약
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include<stdio.h>
struct student{ //구조체 student를 선언하고 멤버들 정해준다.
int number;
char name[20];
double grade;
};
int main(void)
{
struct student s = {19980414, "jinminu", 4.3}; //구조체 변수 s선언과 동시에 초기화
struct student *p; //구조체 student를 가르키는 포인터변수p 선언
p = &s;//포인터 p는 구조체변수 s를 가르킨다.(평소와 똑같음)
}
|
cs |
포인터로 구조체를 가르키는게 가능하다.
4가지 경우를 살펴보자.
1
2
3
4
|
1. (*p).number : 포인터p가 가르키는 구조체의 멤버 number
2. p -> number : 동일
3. *p.number = *(p.number) : 구조체p의 멤버인 number가 가르키는 것. number는 포인터여야 한다!
4. *p -> number = *(p -> number) : 동일
|
cs |
연산자 우선순위를 주의한다.
. 와 -> 연산자 우선순위는 * 보다 우선된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include<stdio.h>
struct student
{
int number;
char name[20];
double grade;
};
int main(void)
{
struct student s = {19980414, "jinminu", 4.3};
struct student *p;
p = &s;
printf("생년월일 : %d\n", p -> number); //p가 가르키는 구조체의 멤버 number을 출력한다
printf("생년월일 : %d\n", (*p).number); //"*p는 p가 가르키는 것"의 멤버 number 출력
printf("생년월일 : %d\n", s.number); //구조체s의 멤버number
return 0;
}
|
cs |
728x90
'C프로그래밍 > 개인 공부' 카테고리의 다른 글
C언어 - 스트림과 파일 입출력 기초(쓰기와 삭제) (0) | 2022.11.02 |
---|---|
C언어 - 10진수를 2진수로 바꾸기(재귀함수) (1) | 2022.10.13 |
C언어 - 문자열 변경, 문자열 상수와 포인터 (0) | 2022.08.09 |
C언어 - 간접 참조 연산자 * (0) | 2022.07.14 |
C언어 - 쉽게 풀어쓴 C언어 express 10장 배열 실습문제(짝수번) (0) | 2022.07.13 |