강의

멘토링

로드맵

Inflearn brand logo image

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

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

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

7.4 주소에 의한 인수 전달

함수선언 시 foo(ptr)은 되고 foo(*ptr)안되는 이유가 궁금합니다.

작성

·

271

1

강의7-4 1분에서

int *ptr=value;

1. foo(ptr)은 되고 foo(*ptr)이거는 왜안되나요? 위에 변수가 포인터로 선언되었으니 포인터 변수인 후자도 맞지 않나요?

#include<iostream>

using namespace std;

typedef int* pint;

void getsincos(int *ptr)

{

 cout << *ptr << " " << ptr << " " << &ptr << endl;

}

int main()

{

        int value = 5;

        cout << value << " " << &value << endl;

        int *ptr = &value;

        cout << &ptr<< endl;

        getsincos(ptr);

        return 0;

 

}

2.

cout << *ptr << " " << ptr << " " << &ptr << endl;

이코드중에 ptr은 &value이고 &ptr은 &&value니까 같은 주소일꺼라고 생각했는데 혹시 왜 다른지 알수있나요?

답변 2

1

홍정모님의 프로필 이미지
홍정모
지식공유자

2번은 중요한 내용입니다. getsincos(int *ptr)의 ptr은 getsincos 함수의 영역 안에 선언된 지역 변수입니다. 함수가 호출될 때 인수로 들어온 값을 매개변수를 초기화하면서 복사합니다. https://youtu.be/6Fp3juDXAUw 이 강의가 도움이 될 것 같네요.

1번은 2번을 이해하신 후에 다시 생각해보시는게 좋겠네요.

0

홍정모님의 프로필 이미지
홍정모
지식공유자

강의 앞부분에 매개변수 설명하면서 주소 비교하는 부분이 있을텐데 복습하시면 좋을 것 같습니다.

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

질문하기