인프런 커뮤니티 질문&답변

devDev님의 프로필 이미지
devDev

작성한 질문수

홍정모의 따라하며 배우는 C언어

9.17 포인터 변수의 크기

[9.17 00:47] 포인터 자료형이라는 것이 별도로 존재합니까?

작성

·

168

0

[9.17 00:47]

포인터 자료형이라는 것이 별도로 존재합니까?

(몇 강인지는 구체적으로 기억나지 않습니다만 교수님께서 앞에서 포인터 자료형 같은 것은 별도로 존재하지 않는다고 말씀한 걸로 기억하고 있습니다.)

코드 예제를 보면 char*, float*와 같은 것들을 sizeof()의 인자로 사용하고 있습니다.

변수 선언 시, char* ptr_a = &a; 에서 *ptr_a의 자료형이 char라는 것을 규명하기 위해 char를 사용하는 것으로 이해하고 있습니다.

답변 2

0

devDev님의 프로필 이미지
devDev
질문자

교수님. 답변 감사합니다.

그럼 char*, int* 같은 것들을 지칭하는 명확한 개념은 존재하지 않습니까?

" char* 자료형이 있는 것 처럼 생각할 수 도 있습니다" 라는 말씀은 "포인터 자료형은 존재하지 않는다"는 말씀으로 이해해도 괜찮죠?

typedef를 이용해 재정의 해주지 않았음에도 불구하고 sizeof(char*)가 잘 작동하는데 그럼 sizeof(char*)에서 char* 는 무엇으로 간주해야 합니까?

(현재 배운 것만으로는 이해가 힘든 부분일까요? 그렇다면 일단 넘어가고 뒤에 가서 공부를 더한 뒤 그때도 모르면 다시 질문 드리겠습니다.)

0

안녕하세요?

이해하신 게 맞고요.

이해에 도움이 된다는 측면에서 char* 자료형이 있는 것 처럼 생각할 수 도 있습니다.

규명이라고 말씀하신게 해당 포인터 변수를 dereferencing 했을 때 메모리에서 얼마만큼 봐야하는 지를 언급하신 거라면 맞습니다.

이런 의문은 작은 예제를 하나 만들어서 직접 체크해보면 이해에 도움이 되는데요.

저는 아래와 같이 해봤습니다.

<코드>

#include <stdio.h>

int main()
{
    char a = 'A';
    char* pa = &a;

    printf("*pa : %c\n", *pa);

    printf("sizeof(char*) : %zd\n"sizeof(char*));
    printf("sizeof(int*) : %zd\n"sizeof(int*));

    typedef char* ptr_char;

    ptr_char pa2 = &a;

    printf("*pa2 : %c\n", *pa2);


    return 0;
}

<결과>

뒤에 가시면 typedef를 배우게 되는데요.

typedef를 이용해서 

마치 char* 자료형이 있는 것 처럼 이름을 재정의 해줄 수 있거든요.

그 강의를 보시면 이해에 도움이 될 수도 있을 겁니다.

감사합니다.

devDev님의 프로필 이미지
devDev

작성한 질문수

질문하기