티스토리 뷰
배열포인터 처리
#포인터 배열 기초
1. 1차원 포인터 배열
주소를 저장하는 배열
형식 : 데이터형 *배열명[배열크기];
int*arr[5]; -> 크기가 5인 인트형 배열
포인터 배열의 각원소로 변수의 주소를 저장함
배열의 각원소가 포인터형이므로, 원소가 가리키는 변수에 접근하려면 배열의 원소 앞에 간접 참조 연산자 *을 사용해야함
2. 2차원 포인터 배열형식 : 데이터형 *배열명[배열크기];
int*arr[5]; -> 크기가 5인 인트형 배열
포인터 배열의 각원소로 변수의 주소를 저장함
배열의 각원소가 포인터형이므로, 원소가 가리키는 변수에 접근하려면 배열의 원소 앞에 간접 참조 연산자 *을 사용해야함
포인터 배열의 각원소에 배열의 시작 주소를 저장
arr[i]가 int배열의 시작 주소로 초기화 되었을 때, arr[i]가 가리키는 배열의 원소에 접근하려면 arr[i][j]라고 씀
for(i = 0; i < 3; i++) {
for(j=0; j < 3; j++) {
printf("&d", arr[i][j])
}
}
arr[i]가 int배열의 시작 주소로 초기화 되었을 때, arr[i]가 가리키는 배열의 원소에 접근하려면 arr[i][j]라고 씀
for(i = 0; i < 3; i++) {
for(j=0; j < 3; j++) {
printf("&d", arr[i][j])
}
}
# 고급 포인터 배열 기술
1. 구조체 포인터 배열
구조체 배열은 메모리를 많이 사용하므로 비효율적임
구조체 포인터 배열을 이용하면 구조체는 동적 메모리에 할당하고 그주소만 포인터 배열에 넣어두고 사용할 수 있음
STUDENT std[100] -> 4000byte
STUDENT* std[100] -> 400byte
구조체 포인터 배열의 메모리 구조
2. 2차원 배열포인터 처리구조체 포인터 배열을 이용하면 구조체는 동적 메모리에 할당하고 그주소만 포인터 배열에 넣어두고 사용할 수 있음
STUDENT std[100] -> 4000byte
STUDENT* std[100] -> 400byte
구조체 포인터 배열의 메모리 구조
행 단위 포인터 변수
데이터형(*포인터명)[배열크기];
int arr [3][5] = {
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15}
}
int (*p[5]) = &arr[0]
배열에 대한 포인터를 &arr[0]으로 초기화하는 대신, 간단하게 arr로 초기화 할수 있음
배열에 대한 포인터p로 이차원 배열의 원소에 접근하려면 p가 마치 이차원 배열명인 것처럼 2개의 인덱스를 사용하면 됨
데이터형(*포인터명)[배열크기];
int arr [3][5] = {
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15}
}
int (*p[5]) = &arr[0]
배열에 대한 포인터를 &arr[0]으로 초기화하는 대신, 간단하게 arr로 초기화 할수 있음
배열에 대한 포인터p로 이차원 배열의 원소에 접근하려면 p가 마치 이차원 배열명인 것처럼 2개의 인덱스를 사용하면 됨
'JAVA기반스마트웹개발2021 > 프로그래밍언어 활용' 카테고리의 다른 글
애플리케이션 구현 (0) | 2021.08.05 |
---|---|
전처리기 (0) | 2021.08.05 |
스토리지 클래스 (0) | 2021.08.05 |
함수의 인자 (0) | 2021.08.05 |
공용체와 열거체 (0) | 2021.08.05 |