1-1.
1) &연산자가 변수 앞에 붙으면 그 변수의 를 나타낸다.
2) & 이름은?
1) 주소
2) 앤퍼센트
포인터 선언문과 대입문 사용의 차이를 비교해 봅시다.
2-1.
포인터 변수에 NULL을 대입하는 것의 의미는 무엇인가요?
다음 중 옳은 것을 골라주세요.
int* ptr = NULL;
1) ptr 포인터 변수가 가리키는 곳에 NULL을 대입
2) ptr 포인터 변수를 초기화
포인터 변수에 NULL을 대입하는 것의 의미는 가리키는 변수가 없다는 것을 의미합니다.
2) ptr 포인터 변수를 초기화 합니다.
포인터 변수를 선언할때는
*(애스터리스크)가 값을 가리키지 않습니다.
int* ptr = NULL ; 이와같은 선언문은
데이터 타입이 int 타입인, * 포인터 변수 ptr 입니다. 라는 것을 나타냅니다.
자, 그러면 다음의 대입문과 비교해 봅시다.
2-2. 다음 중 옳게 대입한 것을 고르세요.
int num = 3;
int* ptr = NULL;
1)
*ptr = #
ptr = 7;
2)
ptr = #
*ptr = 7;
int num = 3;
int* ptr = NULL;
2)
ptr = #
*ptr = 7;
포인터 변수의 선언문과 대입문을 반드시 비교해 보셔야 합니다.
*ptr이라고 둘다 적혀있는데, 왜 int* ptr = 은 주소가 대입되는 것이고, *ptr = 에는 값이 대입 되는것 일까?
int num = 3;
int* ptr = #
*ptr = 7;
두개가 *(애스터리스크)가 같이 들어간다고 해서 같은 표현인 것이 절대 아니라는 것을 반드시 기억하셔야 합니다.
int* ptr은 선언 할 때.
즉, 데이터 타입이 int형이며 *포인터 변수를 나타내는 선언문이기 때문에 ptr은 포인터 변수 입니다.
따라서 포인터 변수에는 주소가 할당되기 때문에, &로 주소를 대입하는 것이고,
*ptr 은 포인터 변수 ptr이 가르키는 메모리에 해당하는 값(num의 값 3)의 공간에 대입하는 것이기 때문입니다.
선언문의 *(애스터리스크)와 대입문의 *(애스터리스크)는 반드시 구분하셔서 기억하셔야 합니다.
더 나아가 복습을 하신다면 다음 게시글을 확인해 주시기 바랍니다.
https://hello-kk.tistory.com/88
'--------------------*** > 자료구조' 카테고리의 다른 글
스택 중위표기식을 후위표기식으로 전환 (0) | 2020.02.20 |
---|---|
[하노이 타워] c++코드 이해/순환 알고리즘 (0) | 2020.02.18 |
[배열] 2차원 배열 복습 (0) | 2020.02.17 |
[배열] 1차원 배열 복습 (0) | 2020.02.17 |
visual studio 콘솔창 바로 종료되지 않게 설정하기 (1) | 2020.02.08 |