Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그리디 알고리즘(Greedy Algorithm)
- DFS(Depth First Search)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- DFS & BFS
- 백준 21606번
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- 백준 1707번
- DFS
- BFS(Breadth First Search)
- 트리(Tree)
- 백준 2812번
- BFS
- 백준 9012번
- 백준 2261번
- 위상 정렬(Topological Sort)
- 이분 그래프(Bipartite Graph)
- 큐(Queue)
- 백준 2504번
- 분할 정복(Divide and Conquer)
- 이분 탐색(Binary Search)
- 동적 프로그래밍(Dynamic Programming)
- 스택(Stack)
- 백준 17608번
- 백준 10000번
- 그래프(Graph)
- 알고리즘 개념
- 백준 2493번
- 백준 18352번
- 위상 정렬(Topology Sort)
- 백준 1948번
Archives
- Today
- Total
Always Be Wise
이중 포인터와 포인터 배열 본문
728x90
이중 포인터는 포인터의 주소 값을 담는 변수로, 포인터의 포인터라고 할 수 있다.
아래 코드에서 ptr에 num의 주소 값을 대입하고, pptr에는 ptr의 주소 값을 대입했다. 참조 연산자는 포인터가 가리키고 있는
변수의 값을 나타낸다. 이중 포인터는 그 포인터가 가리키고 있는 곳으로 가서, 또 그 포인터가 가리키는 주소로 찾아가서 그 변수의
값을 나타낸다.
#include <stdio.h>
int main()
{
int num = 10;
int *ptr;
int **pptr;
ptr = #
pptr = &ptr;
printf("num : %d, *ptr : %d, **ptr : %d\n", num, *ptr, **pptr);
// num : 10, *ptr : 10, **ptr : 10
printf("num 주소 : %d, ptr 값 : %d, **ptr 값 : %d\n", &num, ptr, *pptr);
// num 주소 : -741557916, ptr 값 : -741557916, **ptr 값 : -741557916
printf("ptr 주소 : %d, pptr 값 : %d", &ptr, pptr);
// ptr 주소 : -741557912, pptr 값 : -741557912
return 0;
}
포인터를 담은 배열을 포인터 배열이라 한다. 참조 연산자를 붙인다는 것만 빼면 일반 배열과 동일하게 선언하며, 대입할 때는 변수의
주소 값을 넣는다.
#include <stdio.h>
int main()
{
int num1 = 10, num2 = 20, num3 = 30;
int *parr[3];
parr[0] = &num1;
parr[1] = &num2;
parr[2] = &num3;
for(int i=0; i<3; i++)
{
printf("parr[%d] : %d\n", i, *parr[i]);
}
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
typedef를 이용한 구조체 선언 (0) | 2021.12.04 |
---|---|
구조체란? (0) | 2021.12.04 |
상수 포인터 (0) | 2021.12.04 |
포인터 연산과 배열 (0) | 2021.12.04 |
Call by value & Call by reference (0) | 2021.12.04 |
Comments