Pointer & Linked List - Call by Value & Call by Reference
Pointer & Linked List
1. Pointer
포인터란?
포인터와 포인터 변수
◦ 메모리의 주소 값을 저장하기 위한 변수
◦ "포인터"를 흔히 "포인터 변수"라 한다.
◦ 주소 값과 포인터는 다른 것이다.
포인터란?
포인터란?
• 포인터의 타입과 선언
– 포인터 선언 시 사용되는 연산자 : *
– A형 포인터(A*) : A형 변수의 주소 값을 저장
포인터란?
• 주소 관련 연산자
– & 연산자 : 변수의 주소 값 반환
– * 연산자 : 포인터가 가리키는 메모리 참조
포인터의 타입
• 포인터에 다양한 타입이 존재하는 이유
– 포인터 타입은 참조할 메모리의 크기 정보를 제공
Q1. 포인터의 사용
Question 1-1
Question 1-2
Assignment #1 해설
배열의 이름
◦ 배열 이름은 첫 번째 요소의 주소 값을 나타낸다.
Assignment #1 해설
배열 이름의 포인터 활용
◦ 배열 이름을 포인터처럼, 포인터를 배열 이름처럼 활용 하는 것이 가능하다.
Assignment #1 해설
Question 2.
Assignment #1 해설
2차원 배열의 포인터 활용
Call by Value & Call by Reference
값의 복사에 의한 전달
◦ 해당 변수를 직접 인자로 넘긴다.
참조를 인자로 전달
◦ 해당 변수를 가리키는 주소를 인자로 넘긴다.
Call by Value
기본적인 인자의 전달 방식
◦ 값의 복사에 의한 전달
Call by Value-SWAP
Call by Reference(1)
Call-By-Reference
◦ 참조(참조를 가능케 하는 주소 값)를 인자로 전달하는 형태의 함수 호출
Call by Reference(2)
배열의 함수 인자 전달 방식
◦ 배열 이름(배열 주소, 포인터)에 의한 전달
Call by Reference-SWAP
• Call-By-Reference에 의한 swap
& Operator
scanf함수에서 &연산자를 사용하는 이유
2. Linked List
연결 리스트 기본
typedef struct node{
int Data; 노드 내부의 실제 데이터 또는 레코드
node* Next; Next가 가리키는 것은 node 타입
} node; 구조체에 node라는 새로운 타입명 부여
typedef node* Nptr; Nptr 타입이 가리키는 것은 node 타입
Nptr p, q; Nptr 타입 변수 p, q를 선언
연결 리스트-노드 만들기
노드 만들기, 이어 붙이기
p = (node *)malloc(sizeof(node));
p->Data = 33;
p->Next = (node *)malloc(sizeof(node));
p->Next->Data = 22;
p->Next->Next = NULL;
연결 리스트-노드 삽입
간단한 삽입
p = (node *)malloc(sizeof(node));
p->Data = 8;
p->Next = Temp->Next;
Temp->Next = p;
연결 리스트-노드 삭제
간단한 삭제
p = Temp->Next;
Temp->Next = Temp->Next->Next;
delete p;
연결 리스트-노드 디스플레이
디스플레이
Temp = Head;
While (Temp != NULL)
{
cout<<“ Temp->Data=“<< Temp->Data<<endl ;
Temp = Temp->Next;
}
Assignment #3 해설
단일 연결 리스트의 역순
Assignment #3 해설
'myPPT' 카테고리의 다른 글
부울 대수 - 논리 회로 (0) | 2015.08.12 |
---|---|
대한민국헌정사, 국가형태와 구성요소, 헌법의 기본원리 (0) | 2015.08.07 |
화학chemistry 에서의 물질(Matter (0) | 2015.07.30 |
주기율표 Arrangement of the Elements (0) | 2015.07.24 |
경영학 입문 (0) | 2015.07.22 |