티스토리 뷰
포인터 활용
# 포인터와 배열
1. 포인터로 배열 참조
배열명: 별의 시작 주소를 의미하는 상수
배열의 시작 주소를 구할때는 & 없이 배열명만 사용
배열명을 포인터 처럼 사용 가능
- 인덱스를 사용하는 대신 배열의 시작 주소로 포인터 연산을 하면 배열의 특정 원소에 접근가능
*(arr+i)는 arr[i]를 의미
배열의 시작 주소로 초기화된 포인터를 이용해서 배열의 모든 원소에 접근가능
포인터 변수를 배열 이름인 것처럼 사용 가능
포인터와 +,- 연산
ex)
int arr[5] = {12, 25, 37, 49, 53}; int *p =arr;
*p+1 -> 13
*(p+2) -> 37
arr + 3 -> arr[3]의 주소
*(arr+3) -> 49
*arr+4 -> 16
p[4] -> 53
&arr[2] -> arr[2]의 주소
p+3 -> arr[3]의 주소
2. 포인터와 배열원소배열의 시작 주소를 구할때는 & 없이 배열명만 사용
배열명을 포인터 처럼 사용 가능
- 인덱스를 사용하는 대신 배열의 시작 주소로 포인터 연산을 하면 배열의 특정 원소에 접근가능
*(arr+i)는 arr[i]를 의미
배열의 시작 주소로 초기화된 포인터를 이용해서 배열의 모든 원소에 접근가능
포인터 변수를 배열 이름인 것처럼 사용 가능
포인터와 +,- 연산
ex)
int arr[5] = {12, 25, 37, 49, 53}; int *p =arr;
*p+1 -> 13
*(p+2) -> 37
arr + 3 -> arr[3]의 주소
*(arr+3) -> 49
*arr+4 -> 16
p[4] -> 53
&arr[2] -> arr[2]의 주소
p+3 -> arr[3]의 주소
배열의 원소를 가리키는 포인터는 배열의 어떤 원소든지 가리킬 수 있음
포인터가 배열의 원소가 아닌 일반 변수를 가리킬때도 *(p+i) == p[i]는 항상 성립함
배열과 포인터의 차이점
- 배열이 메모리에 할당되고 나면, 배열의 시작 주소 변경 불가
- 포인타 변수는 값을 변경할 수 있으므로, 포인터 변수에 보관된 주소는 변경가능
포인터가 배열의 원소가 아닌 일반 변수를 가리킬때도 *(p+i) == p[i]는 항상 성립함
배열과 포인터의 차이점
- 배열이 메모리에 할당되고 나면, 배열의 시작 주소 변경 불가
- 포인타 변수는 값을 변경할 수 있으므로, 포인터 변수에 보관된 주소는 변경가능
# 포인터 연산
1. 포인터 증감 연산
2. 포인터 배열
주소를 저장하는 배열
-데이터타입 *포인터 변수명[크기];
ex)
int a = 10, b = 20, c = 30, d = 40, e =50;
int *arr[5] = {&a, &b, &c, &d, &e};
포인터 배열의 각 원소에 배열의 시작 주소를 저장할 수도 있음
arr[i]가 int 배열의 시작 주소로 초기화되었을 때 arr[i]가 가르키는 배열의 원소에 접근하려면 arr[i][j]로 기술
-데이터타입 *포인터 변수명[크기];
ex)
int a = 10, b = 20, c = 30, d = 40, e =50;
int *arr[5] = {&a, &b, &c, &d, &e};
포인터 배열의 각 원소에 배열의 시작 주소를 저장할 수도 있음
arr[i]가 int 배열의 시작 주소로 초기화되었을 때 arr[i]가 가르키는 배열의 원소에 접근하려면 arr[i][j]로 기술
'JAVA기반스마트웹개발2021 > 프로그래밍언어 활용' 카테고리의 다른 글
구조체 (0) | 2021.07.30 |
---|---|
포인터와 문자열 (0) | 2021.07.30 |
포인터 (0) | 2021.07.29 |
문자열 (0) | 2021.07.27 |
배열 (0) | 2021.07.27 |