반응형
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
- 데브옵스
- linux
- centOS7
- swift 클로저
- 클라우드
- 부스트코스
- 도커 명령어
- AWS
- 운영체제
- Python
- C++
- kubernetes
- 컨테이너
- 도커 컨테이너
- 프로세스
- k8s
- 네트워크
- ios
- centOS
- 도커 이미지
- docker
- 쿠버네티스
- NGINX
- os
- Swift
- boj
- 도커
- devops
- 인프라
- 리눅스
Archives
- Today
- Total
귀염둥이의 메모
[C언어] 포인터(Pointer) 본문
반응형
포인터(Pointer)
- 포인터는 특정한 변수 자체가 존재하는 메모리 주소의 값을 가진다.
- 포인터는 컴퓨터 시스템의 특정한 메모리에 바로 접근할 수 있다.
- 중요한 메모리 영역에 접근하지 않도록 주의해야 한다. -> 의도하지 않은 결과 발생
기존에 a를 이용해서 5라는 값을 찾을 수 있지만 포인터 변수 b를 이용해서도 5라는 값을 찾을 수 있다.
int main() {
int a = 5;
int *b = &a; // 선언할 때 쓰는 *는 포인터 변수임을 알림
printf("*b = %d\n", *b); // *b = 5
return 0;
}
'선언할 때' 쓰는 *는 포인터 변수임을 알려주기 위한 목적을 가진다.
이후에 *b 라고 쓰게 되면, 포인터 변수 b가 가리키는 주소의 값 5이다. 간접 참조
포인터 관련 연산자
- 주소 연산자(&) : 변수 앞에 붙어서 변수의 메모리 시작 주소 값을 구한다.
- 포인터(*) : 포인터 변수를 선언할 때 사용한다.
- 간접 참조 연산자(*) : 선언된 포인터 변수가 가리키는 변수를 구한다.
int main() {
int a[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d\n", &a[i]);
}
/* 출력결과
-405719472
-405719468
-405719464
-405719460
-405719456
*/
return 0;
}
printf에서 &를 사용하여 주소 값을 출력했기 때문에 배열의 각 원소의 주소 값이 출력된다.
int main() {
int a = 5;
int *b = &a; // 변수 a의 주소 값을 가리킨다.
int **c = &b; // 포인터 변수 b의 메모리 주소 값을 가리킨다.
printf("%d\n", **c); // 5
return 0;
}
포인터는 단지 특정한 메모리 주소를 담고 있는 변수일뿐이다. 포인터는 다중으로 사용 가능하다.
배열과 포인터
- 배열과 포인터는 사실 동일하다.
- 배열을 선언한 이후에는 그 이름 자체가 포인터 변수와 동일함.
int main() {
int a[] = {1, 2, 3, 4, 5};
int *b = a;
printf("%d\n", b[2]); // 3
return 0;
}
<참고>
패스트캠퍼스 컴퓨터공학 올인원 패키지 - (컴퓨터 공학 전공필수 소프트웨어 베이직)
반응형
'CS > C, C++' 카테고리의 다른 글
[C++] sort 이용한 오름차순, 내림차순 정렬, greater<>, less<> (0) | 2021.06.21 |
---|---|
[C++] STL (Standard Template Library) (0) | 2021.02.17 |
[C++] std::accumulate (0) | 2021.02.08 |
Comments