C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?

2022. 12. 11. 01:04·C프로그래밍/개인 공부
1
2
3
struct{
    char name[20];
};
cs

이렇게 하면 구조체 내부의 문자배열 name[20]에 문자열이 저장된다. 즉, 20바이트의 저장공간이 구조체 내부에 할당된다.

 

1
2
3
struct{
    char *name;
};
cs

이렇게 문자형을 가르키는 포인터를 선언하면, 문자열은 문자열 상수들이 모여있는 공간에 저장된다. 구조체 내부에는 포인터 name을 위한 1바이트만 할당되게 된다. 즉, 문자열을 위한 공간이 구조체 내부에는 없다. 문자열을 저장할 수 없다. 어딘가에 문자열이 이미 저장되어있을 경우에만 가르키면서 사용할 수 있다.

 

1
2
3
4
5
struct student{
    char *name;
};
struct student s;
scanf("%s", s.name);
cs

따라서, 아직 포인터 name의 주소가 옳바르게 초기화되지 않았기 때문에, 이렇게 하면 안된다!

 

1
2
3
4
struct student{
    char *name;
};
struct student s = {"jin"};
cs

하지만, 이렇게 하는건 가능하다. 구조체 안에있는 name이라는 포인터가 "jin"이라는 문자열상수를 가르키도록 하는것이기 때문이다.

'C프로그래밍 > 개인 공부' 카테고리의 다른 글

C언어 - 열거형(enumeration)  (0) 2022.12.11
C언어 - 구조체와 함수  (0) 2022.12.11
C언어 - 구조체와 포인터  (0) 2022.12.10
C언어 - 문자열을 정수로, 정수를 문자열로 바꾸기  (0) 2022.12.10
C언어 - 포인터의 기초  (0) 2022.11.20
'C프로그래밍/개인 공부' 카테고리의 다른 글
  • C언어 - 열거형(enumeration)
  • C언어 - 구조체와 함수
  • C언어 - 구조체와 포인터
  • C언어 - 문자열을 정수로, 정수를 문자열로 바꾸기
Minu Jin
Minu Jin
정보의 바다
  • Minu Jin
    뇌 구조가 바이너리
    Minu Jin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minu Jin
C언어 - 구조체안에 문자배열? or 문자형을 가르키는 포인터?
상단으로

티스토리툴바