언어 자료구조 알고리즘/디딤돌 C언어

50. 인덱스 연산자

언제나휴일 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. 인덱스 연산자



반응형

'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글

55. 프로그램 동작 원리  (0) 2016.01.01
54. 프로세스 메모리 구조  (0) 2016.01.01
53. 프로그램 생명 주기  (0) 2016.01.01
52. 함수 개요  (0) 2016.01.01
51. 정리하기  (0) 2016.01.01
49. 간접 연산자  (0) 2016.01.01
48. 포인터와 - 연산  (0) 2016.01.01
47. 포인터 + 정수  (0) 2016.01.01
46. 배열 선언문  (0) 2016.01.01
45. 배열과 포인터 개요  (0) 2016.01.01