티스토리 뷰
- 포인터변수의 선언
- 형식: 자료형 *포인터변수명;
- 사용 예: int *p;
- 기능: 변수 p는 포인터 변수로서 정수형의 자료를 갖는 변수의 주소를 갖는다.
- int *p
- p: 포인터 변수로 정수형 자료가 수록되어 있는 주소를 가지고 있음
- *p: 해당 주소에 수록되어 있는 정수형 자료를 갖고 있음
- 포인터변수의 사용 예
- int a, b;
- int *p;
- 변수 p를 포인터 변수로 선언
- a=5000;
- p=&a;
- 포인터 변수 p에 변수 a의 주소 값을 대입
- b=*p;
- 포인터 변수 p가 가리키는 주소의 내용을 변수 b에 저장(a의 값 5000이 b에 저장된다)
- 포인터변수의 참조
- 포인터변수의 참조 => &, * 연산자 사용
- 예 1) int *p, i=4; *p=i;
- 포인터변수 p가 기억공간 내 몇 번지를 가르키는지 알 수 없음
- 예 2) int *p, i=4; *p=5;
- 포인터변수 p가 기억공간 내 몇 번지를 가르키는지 알 수 없음
- 예 1) int *p, i=4; *p=i;
- 포인터변수의 올바른 참조 방법
- 예 3) int *p i=4; p=&i; *p=10;
- 포인터변수의 참조 예
- 포인터변수의 참조 => &, * 연산자 사용
#include <stdio.h>
void main() {
int *p, i=3, j;
p=&i; // 포인터변수 p는 i의 주소를 가리킴
j=*p; // 포인터변수 p가 가리키는 번지의 내용을 변수 j에 대입
j++; // 변수 j의 값을 1증가
print("*p = %d\n", *p); // *p = 3
print(" p = %x\n", p); // p = fff4
print(" j = %d\n", j); // j = 4
}
- void형 포인터
- 형식: void * 포인터명;
- 의미
- 프로그램 실행시에 자료형이 결정되는 경우에 사용
- 저장하기 전에 명시적 형변환이 필요
- void형 포인터의 사용 예
#include <stdio.h>
void main(){
int a = 100;
char b = 'b';
void *p = NULL; // void형 포인터를 선언한 후 초기화
p = (int*)&a; // void형 포인터 p에 int형 변수 a의 주소를 명시적 형변환을 이용하여 대입
printf("*p = %d\n", *(int*)p); // *p = 100
p = (char*)&b; // void형 포인터 p에 char형 변수 b의 주소를 명시적 형변환을 이용하여 대입
printf("*p = %c\n", *(char*)p); // *p = b
}
- 일반 변수와 포인터 변수의 비교
일반 변수 | 포인터 변수 | |||
선언 | int a; | 정수형 변수 a선언 | int *a; | 포인터변수 a를 정수형으로 선언 |
값 할당 | a = 100 | 변수 a에 100 할당 | *a = 100; | a 주소에 100 할당 |
주소참조 | &a | 변수 a의 주소 | a | a 자체가 주소 |
주소연산 | 연산 불가능 | a--; | 포인터를 1 감소 |
- 포인터 연산
- 포인터변수에 +,-,++,-- 연산자를 사용하는 연산
- int a[10], *p, *q;
- p=&a[2]
- q=p+3 -> q=&a[5]
- p=p+6 -> p=&a[8]
- int a[10], *p, *q;
- p=&a[7]
- q=p-3 -> q=&a[4]
- p=p-5 -> p=&a[2]
- int a[10], *p, *q;
- 포인터변수에 +,-,++,-- 연산자를 사용하는 연산
'C' 카테고리의 다른 글
[C] 구조체 (0) | 2021.04.30 |
---|---|
[C] 포인터와 배열 (0) | 2021.04.27 |
[C] 배열 (0) | 2021.04.14 |
[C] 입.출력 함수와 연산자 (0) | 2021.03.25 |
[C] 자료형과 선행처리기 (0) | 2021.03.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 세마포어
- C
- javascript
- stackframe
- BFS
- client side rendering
- react
- 교착상태
- 소프트웨어
- dfs
- 클래스
- 배열
- C++
- 최단경로
- 인접리스트
- 스텍
- 재귀함수
- 알고리즘
- 입출력장치
- Stack
- 퀵정렬
- 자료구조
- 병행프로세스
- 동적프로그래밍
- 인접행렬
- server side rendering
- 운영체제
- 구조체
- Java
- 이진탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함