기록장

[C++][자료구조] 5주차 과제 본문

코딩 공부/C++

[C++][자료구조] 5주차 과제

민j 2023. 4. 4. 03:33

1. 다음과 같은 문장이 실행되면 i값은 얼마인가?

int i = 10;
int* p;
p = &i;
*p = 8;

 

i값은 8이 된다.

: 3번 줄에서 포인터 p의 내용에 i의 주소가 저장된다.

따라서 *p는 i의 내용을 가리키므로 i에는 8이 저장된다.

 

2. 다음과 같은 문장을 수행하고 난 뒤의 a[0]의 값은?

void sub(int b[]) {
	b[0] = 0;
}
void main() {
	int a[] = {1,2,3,4,5,6}
	sub(a);
}

 

a[0]의 값은 0이다.

sub의 매개변수 b는 포인터이기 때문에 배열의 값을 직접 변경한다.

 

3. 단순 연결 리스트의 노드들을 노드 포인터 p로 탐색하고자 한다. p가 현재 가리키는 노드에서 다음 노드로 가려면 어떻게 하여야 하는가?

① p++;

② p--;

③ p=p->link;

④ p=p->data;

 

= 3번이다.

link는 링크 필드로, 다음 노드의 주소가 저장되어있다. 따라서 p에 p의 link를 저장하면 다음 노드로 갈 수 있다.