산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 언어에서 배열과 포인터의 관계 이해하기

배열과 포인터의 관계

이 튜토리얼에서는 C 프로그래밍에서 배열과 포인터의 관계에 대해 배웁니다. 또한 포인터를 사용하여 배열 요소에 접근하는 방법도 학습합니다.

배열과 포인터의 관계를 배우기 전에 다음 두 주제를 확인하세요:


배열과 포인터의 관계

배열은 순차적인 데이터 블록입니다. 배열 요소들의 주소를 출력하는 프로그램을 작성해 보겠습니다.

#include <stdio.h>
int main() {
    int x[4];
    int i;
    for(i = 0; i < 4; ++i) {
        printf("&x[%d] = %p\n", i, &x[i]);
    }
    printf("Address of array x: %p", x);
    return 0;
}

출력

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448

배열 x의 연속된 두 요소 사이에는 4바이트 차이가 있습니다. 이는 우리 컴파일러에서 int의 크기가 4바이트이기 때문입니다.

&x[0]와 x의 주소가 동일함을 알 수 있습니다. 변수 이름 x가 배열의 첫 번째 요소를 가리키기 때문입니다.

C 언어에서 배열과 포인터의 관계 이해하기

위 예제에서 &x[0]은 x와 동일하고, x[0]은 *x와 동일함을 알 수 있습니다.

마찬가지로,


예제 1: 포인터와 배열

#include <stdio.h>
int main() {
    int i, x[6], sum = 0;
    printf("6개의 숫자를 입력하세요: ");
    for(i = 0; i < 6; ++i) {
        // scanf("%d", &x[i]);와 동일
        scanf("%d", x+i);
        // sum += x[i]와 동일
        sum += *(x+i);
    }
    printf("Sum = %d", sum);
    return 0;
}

프로그램을 실행하면 출력은 다음과 같습니다:

6개의 숫자를 입력하세요: 2 3 4 4 12 4
Sum = 29

여기서 6개 요소의 배열 x를 선언했습니다. 배열 요소에 접근하기 위해 포인터를 사용했습니다.


대부분의 문맥에서 배열 이름은 포인터로 변환됩니다. 간단히 말해 배열 이름은 포인터로 변환됩니다. 그래서 포인터로 배열 요소에 접근할 수 있습니다. 하지만 포인터와 배열은 같지 않다는 점을 기억해야 합니다.

배열 이름이 포인터로 변환되지 않는 몇 가지 경우가 있습니다. 더 알아보려면 "배열 이름이 포인터로 변환되지 않는 경우는?"을 참조하세요.


예제 2: 배열과 포인터

#include <stdio.h>
int main() {
    int x[5] = {1, 2, 3, 4, 5};
    int* ptr;
    // ptr에 세 번째 요소의 주소 할당
    ptr = &x[2];
    printf("*ptr = %d \n", *ptr); // 3
    printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
    printf("*(ptr-1) = %d", *(ptr-1)); // 2
    return 0;
}

프로그램을 실행하면 출력은 다음과 같습니다:

*ptr = 3
*(ptr+1) = 4
*(ptr-1) = 2

이 예제에서 &x[2], 즉 세 번째 요소의 주소가 ptr 포인터에 할당되었습니다. 따라서 *ptr을 출력했을 때 3이 표시되었습니다.

*(ptr+1)을 출력하면 네 번째 요소를, *(ptr-1)을 출력하면 두 번째 요소를 얻습니다.

C 언어

  1. 빅데이터와 클라우드 컴퓨팅: 어떻게 함께 작동하는가
  2. C++ 포인터와 배열: 관계 완벽 이해하기
  3. C 프로그래밍: 주소와 포인터를 함수에 전달하기 – 실전 가이드
  4. C 구조체와 포인터 마스터하기: 실전 가이드
  5. 전기 모터 전압-전류 불평형 이해: 원인과 트러블슈팅
  6. IoT와 엣지 컴퓨팅이 서로 보완하는 방법
  7. SCADA vs HMI: 핵심 차이점과 인더스트리 4.0에서의 역할
  8. DC 모터 vs AC 모터: 핵심 차이점과 구매 가이드
  9. 브레이징 vs 납땜: 핵심 차이점 완벽 설명
  10. 2행정 vs 4행정 엔진: 핵심 차이점과 장단점 완벽 비교