언제나휴일 2016. 1. 1. 12:23
반응형

 

C언어에서는 포인터와 정수 사이의 더하기 연산 후에 간접 연산을 수행하는 것을 간단하게 인덱스 연산으로 표현할 수 있어요.
 
인덱스 연산자는 배열 선언에 사용하는 지시 연산자 [ ]와 기호가 같아요.
선언문 이외에서 포인터와 정수가 피연산자인 이항 연산자 [ ]인덱스 연산자라 불러요.
 
인덱스 연산은 상대적 거리에 있는 원소를 접근할 수 있어요.
인덱스는 상대적 거리를 나타내기 때문에 n 번째 원소에 접근하려면 n-1을 사용해야 한답니다.
 
int arr[3]={1,2,3};
int *p = arr;
int index = 0;
 
위와 같이 배열과 포인터, 기본 형식을 선언하였을 때 arr[index] p[index]와 같이 사용하면 *(arr+index), *(p+index)와 같은 표현이예요.
인덱스 연산은 간접 연산보다 간단해서 배열의 각 원소에 접근할 때 자주 사용한답니다.
 
 
◈ 인덱스 연산을 사용한 예
#include <stdio.h>
int main()
{
    int arr[3]={1,2,3};
    int *p = arr;
    int index = 0;
 
    printf("Test 1\n");
    for(index = 0; index < 3; index++)
    {
        printf("index: %d, : %d\n", index, arr[index]);
    }
 
    printf("Test 2\n");
    for(index = 0; index < 3; index++)
    {
        printf("index: %d, : %d\n", index, p[index]);
    }
    return 0;
}
실행 결과
Test 1
index: 0, : 1
index: 1, : 2
index: 2, : 3
Test 2
index: 0, : 1
index: 1, : 2
index: 2, : 3
 
 
◈ 기본 연습
1. 4 명의 국어 성적을 관리할 수 있는 배열을 선언하시오.
    그리고 첫번째 학생은 90, 두번째 학생은 85, 세번째 학생은 69, 네번째 학생은 75점으로 대입합니다.
     네 명의 국어 성적과 합계, 평균을 출력하는 프로그램을 작성하시오.

 2. 한 명의 국어, 영어, 수학 성적을 관리하는 프로그램을 작성하시오.  
      a. 국어, 영어, 수학 성적은 초기값을 -1로 설정합니다.   
      b. 프로그램은 다음을 반복합니다.
          b.1 “I: 추가 D: 삭제 S:검색 L:전체 출력 E:종료를 화면에 출력
          b.2 하나의 문자를 입력받음
          b.3 입력받은 문자가 ‘i’ 혹은 ‘I’일 때는 추가, ‘d’ 혹은 ‘D’일 때는 삭제 , ‘s’ 혹은 ‘S’일 때는 검색
                 ‘l’, ‘L’일 때는 전체 출력을 수행합니다.  
     * 추가 기능에서는 과목을 선택한 후에 성적을 입력받아 해당 과목의 성적을 설정합니다.  
     *삭제 기능에서는 과목을 선택한 후에 선택한 과목의 성적을 -1로 설정합니다.  
     *검색 기능에서는 과목을 선택한 후에 선택한 과목의 성적을 출력합니다.  
     *전체 출력에서는 모든 과목의 성적을 출력합니다.
        (, E를 누르면 프로그램을 종료)

3.
10 개의 정수를 입력받아 크기 순으로 정렬하시오.  

[정답] 디딤돌 C언어 50. 인덱스 연산자



반응형