• 2022. 5. 24.

    by. 데브촙

    반응형

    포인터로 배열의 주소를 저장하여 사용하기

    - 배열은 배열의 시작 주소를 기준으로 색인 작업된 요소의 위치를 계산

    - 배열의 같은 요소를 반복적으로 사용하는 경우 효율이 떨어짐

    char data[5] = {1,2,3,4,5};
    int sum = 0, select = 2;
    // sum 변수에 data[2] 요소 값을 10번 더함
    for(int i = 0; i< 10; i++) sum = sum + data[select];
    // for(int i = 0; i< 10; i++) sum = sum + *(data + select); 과 같음. 덧셈이 2번 일어나는 낭비현상이 발생함.

    - 지속적으로 사용되는 배열의 요소는 주소를 포인터 변수에 저장하여 사용하면 효율 증진됨

    char data[5] = {1,2,3,4,5};
    int sum = 0, select = 2;
    char *p = data + select;	// char *p = &data[select]와 동일한 표현
    for(int i = 0; i< 10; i++) sum = sum + *p;	// 위 예시와 비교했을 때 덧셈연산자 낭비 발생 안함

     

    배열 예제를 포인터 사용해서 바꾸기

    // 배열 ver.
    char data[5] = {1,2,3,4,5};
    int result = 0;
    for(int i = 0; i< 5; i++) result = result + data[i];	
    printf(“data 배열의 각 요소의 합은 %d입니다.\n”,result);
    // 포인터 ver.
    char data[5] = {1,2,3,4,5};
    int result = 0;
    char *p = data; // data 배열의 시작 위치를 포인터 변수 p에 저장함
    for(int i = 0; i< 5; i++) 
    {
    	result = result + *p;	
    	p++;
    }
    printf(“data 배열의 각 요소의 합은 %d입니다.\n”,result);

     

    반응형

    'C' 카테고리의 다른 글

    배열과 포인터의 합체  (0) 2022.05.25
    배열과 포인터 표기법  (0) 2022.05.22
    표준 입력 함수 scanf  (0) 2022.05.21