티스토리 뷰
포인터
변수의 주솟값을 저장하는 공간
* 연산자 : 포인터 변수 주소 값에 있는 데이터
& 참조 연산자 : 변수의 주소 값을 불러온다
데이터타입 *포인터변수명=&변수명;
int temp;
int *p1; // int형을 가리킬 수있는 포인터
int **pp1; // int형 포인터를 가리킬 수있는 포인터
1차원 배열에서 배열명만 단독으로 사용할 경우, 1차원 포인터와 동일
1차원 배열일 때 배열명[요소]형태 또는 *(배열명+요소),
1차원 포인터일 때 포인터[요소] 형태,
*(포인터+요소)일 경우 값을 가리킴
배열의 주소 | 배열명 == &배열명[0] |
배열의 0번지 값 | 배열명[0] == *배열명 |
#include <stdio.h>
void main() {
int a[3] = {1, 2};
int *p = a;
printf("%d %d %d\n", a[0], a[1], a[2]);
printf("%d %d %d\n", *a, *(a+1), *(a+2));
printf("%d %d %d\n", *p, *(p+1), *(p+2));
printf("%d %d %d\n", p[0], p[1], p[2]);
}
값은 모두 1, 2, 0
2차원 배열에서 배열명만 단독으로 사용할 경우, 2차원 포인터와 동일
2차원 배열일 때 배열명[요소] 형태, *(배열명+요소)는 1차원 포인터와 동일
1차원 포인터에 대해 *과 [ ]을 이용해야 값을 가리킬 수 있음
*(a+2) == a[2]
a[1] == *(a+1)
*(a[1]) == *(*a+1)) == **(a+1)
#include <stdio.h>
void main() {
int a[3][2] = {1, 2, 3, 4, 5, 6};
int *p[3] = {a[2], a[0], a[1]};
printf("%d %d %d\n", a[0][0], a[1][0], a[2][0]);
printf("%d %d %d\n", *a[0], *a[1], *a[2]);
printf("%d %d %d\n", p[1][0], p[2][0], p[0][0]);
printf("%d %d %d\n", *p[1], *p[2], *p[0]);
}
값은 모두 1, 3, 5
2차원 배열에서 배열명만 단독으로 사용할 경우, 2차원 포인터와 동일
2차원 배열일 때 배열명[요소][요소] *배열명[요소], **(배열명+요소)일 경우 2차원 배열의 값을 가리킴
#include <stdio.h>
void main() {
int a[3][2] = {1, 2, 3, 4, 5, 6};
int (*p)[2] = a;
int (*q)[2] = a+1;
printf("%d %d %d\n", a[0][0], a[0][1], a[1][0]); // 1, 2, 3
printf("%d %d %d\n", p[0][0], p[0][1], p[1][0]); // 1, 2, 3
printf("%d %d %d\n", q[0][0], q[0][1], q[1][0]); // 3, 4, 5
}
'배운 것 기록 > etc' 카테고리의 다른 글
[Python] 자료형 - Set / List / 튜플 / 딕셔너리 (0) | 2022.07.13 |
---|---|
정규표현식 (0) | 2022.07.07 |
정규화 과정 (0) | 2022.07.05 |
댓글