C언어 - 구조체와 포인터

2022. 8. 9. 18:15·C프로그래밍/개인 공부

요약

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를 가르킨다.(평소와 똑같음)
}
Colored by Color Scripter
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) : 동일
Colored by Color Scripter
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;
}
Colored by Color Scripter
cs

 

 

'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
'C프로그래밍/개인 공부' 카테고리의 다른 글
  • C언어 - 스트림과 파일 입출력 기초(쓰기와 삭제)
  • C언어 - 10진수를 2진수로 바꾸기(재귀함수)
  • C언어 - 문자열 변경, 문자열 상수와 포인터
  • C언어 - 간접 참조 연산자 *
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    arm
    피보나치
    이진 트리
    rubikpi3
    yolo
    포인터
    파일 입출력
    스택
    Git
    Qualcomm
    커널
    버퍼
    시스템콜
    순환
    rubik pi
    자료구조
    c언어
    INIT
    소수
    드라이버 분석
    Branch
    동적메모리
    커널 기여
    리눅스
    C++
    토발즈
    파이썬
    앤드류모튼
    commit
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
C언어 - 구조체와 포인터
상단으로

티스토리툴바