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
- 백준 18352번
- 백준 21606번
- 백준 1948번
- 트리(Tree)
- 위상 정렬(Topology Sort)
- 백준 2261번
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 백준 2812번
- 이분 탐색(Binary Search)
- 분할 정복(Divide and Conquer)
- BFS
- 큐(Queue)
- 백준 10000번
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- 백준 9012번
- DFS(Depth First Search)
- DFS
- 그리디 알고리즘(Greedy Algorithm)
- 백준 2504번
- 이분 그래프(Bipartite Graph)
- 백준 17608번
- 위상 정렬(Topological Sort)
- 스택(Stack)
- DFS & BFS
- 그래프(Graph)
- 알고리즘 개념
- BFS(Breadth First Search)
- 동적 프로그래밍(Dynamic Programming)
- 백준 1707번
- 백준 2493번
Archives
- Today
- Total
Always Be Wise
포인터 연산과 배열 본문
728x90
배열의 이름은 포인터 변수와 같은 기능을 하며, 첫번 째 요소의 주소값을 나타낸다. 아래와 같이 & 연산자를 사용하지 않아도
arr 이름 자체가 주소값이기 때문에, 바로 포인터에 대입이 가능하다. arr 이름은 배열의 첫번째 원소의 주소값이므로 arrPtr이
가리키고 있는 값을 출력해보면 첫번째 원소값인 10이 출력된다.
#include <stdio.h>
int main()
{
int arr[5] = {10, 20, 30, 40, 50};
int *arrPtr = arr;
// int *arrPtr = NULL;
// arrPtr = &arr;
int arr0Adress = &arr[0];
int arrAdress = &arr;
printf("%d\n", *arrPtr);
printf("%d\n", arr[0]);
printf("%d\n", arr0Adress);
printf("%d\n", arrAdress);
return 0;
}
포인터 변수도 일반 변수처럼 값이 들어가 있는 변수기 때문에 증감 연산을 할 수 있다. 전/후위 연산과 일반 덧셈, 뺄셈 등이 가능하며
곱셈, 나눗셈 연산은 불가하다. 일반 변수에서 전/후위 연산은 1씩 증가하거나 감소한다. 그러나 포인터 변수에서의 전/후위 연산은
자료형에 따라 달라진다. 아래 코드에서 int형 포인터인 arrPtr은 1을 더할 때마다 주소값이 4씩 증가하고, double 포인터인
arrPtr2는 8씩 증가한다. 즉, 포인터 변수가 N만큼 더하거나 뺄 때 자료형의 크기 x N 만큼 변한다.
#include <stdio.h>
int main()
{
int arr[5] = {10, 20, 30, 40, 50};
double arr2[5] = {10.1, 20.2, 30.3, 40.4, 50.5};
int *arrPtr = arr;
double *arrPtr2 = arr2;
printf("포인터 주소 : %d %d\n", arrPtr++, arrPtr2++);
printf("증가 연산 후 : %d %d\n", arrPtr, arrPtr2);
printf("변수 값 : %d %.2f\n", *arrPtr, *arrPtr2);
arrPtr += 2;
arrPtr2 += 2;
printf("증가 연산 후 : %d %d\n", arrPtr, arrPtr2);
printf("변수 값 : %d %.2f\n", *arrPtr, *arrPtr2);
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
이중 포인터와 포인터 배열 (0) | 2021.12.04 |
---|---|
상수 포인터 (0) | 2021.12.04 |
Call by value & Call by reference (0) | 2021.12.04 |
포인터란? (0) | 2021.12.04 |
함수란? (0) | 2021.12.04 |
Comments