• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

포인터 질문

23.02.09 14:05 작성 23.02.09 14:12 수정 조회수 215

0

안녕하세요.

 <Q1>포인터 질문

(예시)

char *string = "abcdefg";

char **ptr = string;

 

  1. string과 ptr은 메모리 구조에서 스택에 쌓이지만, abcdefg는 상수로서 data segment(읽기전용)에 저장되는 것이 맞나요? 따라서, abcdefg를 다른 문자로 변경하지 못하는 것이라고 이해하였는데, 제대로 이해했는지 궁금합니다.

     

  2. 또한, "abcdefg"가 한 뭉텅이로 저장되어있어서, ptr이 배열처럼 abcdefg에서 a의 주소를 가리키는 것이 아니라 abcdefg 자체를 가리키고 있는 것이어서, ptr + 1을 해도 b에 접근하는 것이 아니라 정의되지 않은 어떠한 메모리 주소에 접근하는 것이라고 보면 될까요?


    <Q2> 구조체 질문

    (예시)

     

    struct student {

    char* name;

    int score;

    };

     

    int main()

    {

    struct student* my_student = (struct name*)malloc(sizeof(struct name*));

    ...

    return 0;

    }

     

    1. student->name이 의미하는 것은 '주소'인가요 주소를 통해 접근한 '값'인가요?

     

    감사합니다~

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2023.02.10

Q1.

  1. 그렇습니다.

  2. 음 a의 주소를 가리키고 있습니다. 아래 예제 코드로 확인해보세요.

#include <stdio.h>

int main()
{
	char *string = "abcdefg";

        char **ptr = string;
	printf("%c\n", *ptr);
	printf("%c\n", *ptr+1);
	return 0;
}

 

Q2.

주소입니다. 직접 출력해보시면 확인할 수 있습니다.