본문 바로가기
--------------------***/자료구조

[주소와 포인터] 복습

by kk님 2020. 2. 18.

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

배열과 포인터

배열과 포인터의 특징에 대해 점검해보도록 하겠습니다. 1. 다음과 같은 list 배열이 있습니다. int list[3]={10,20,30}, 대괄호 []와 인덱스가 없는 배열, 즉 list는 무엇을 의미하나요? 더보기 배열의 시작 주소..

hello-kk.tistory.com