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언어 - 문자열을 정수로, 정수를 문자열로 바꾸기
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바