티스토리 뷰

포인터와 배열

    포인터로 배열 참조
  • 배열명: 배열의 시작 주소를 의미하는 상수
  • 배열의 시작 주소를 구할 때는 & 없이 배열명만 사용
  • 배열명을 포인터처럼 사용 가능
  • *(arr+i)는 arr[i]를 의미
  • 배열의 시작 주소에서 데이터 타입 i개 크기만큼 증가된 주소에 있는 값
  • 배열의시작주소로초기화된포인터를이용해서배열의모든원소에접근가능
  • 포인터 변수를 배열 이름인 것처럼 사용 가능
    short data = 10;
    short *ptr = &data;
    ptr[0] = 20; //*p 대신p[0]처럼사용할수 있음

 

    배열과 포인터의 차이점 (중요)
  • 배열이 메모리에 할당되고 나면, 배열의 시작 주소 변경 불가
  • 포인터 변수는 값을 변경할 수 있으므로, 포인터 변수에 보관된 주소는 변경 가능

 

    포인터 배열 : 주소를 저장하는 배열
  • 형식 데이터 타입 *포인터 변수명[크기];
//  포인터배열의각원소에배열의시작주소를저장할수도있음
int x[3] = {1, 2, 3};
int y[3] = {4, 5, 6};
int z[3] = {7, 8, 9};
int* arr[3] = {x, y, z};
//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] );
printf( “\n” );
}

 

    포인터와 배열
  1. 배열명은 배열의 시작 주소를 의미함
  2. 포인터 변수를 배열명으로 초기화한 경우 포인터 변수를
  3. 배열처럼 인덱스를 사용하는 것이 가능함
  4. 배열명은 변수가 아니므로 증감 연산자에 의한 연산은 불가능함
    포인터 이용
  1. 배열명을 포인터 변수와 같이 연산에 의해 배열요소를 참조할 수 있음
  2. 포인터 변수에 증감 연산자를 이용하여 배열요소를 참조할 수 있음
  3. 후위 증감 연산자가, 전위 증감 연산자보다 우선순위가 높음

'스마트웹 개발2021 > 프로그래밍 언어활용' 카테고리의 다른 글

구조체  (0) 2021.07.31
포인터와 문자열  (0) 2021.07.31
포인터 기초  (0) 2021.07.28
문자열  (0) 2021.07.27
배열  (0) 2021.07.27
댓글