English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 포인터와 배열

이 문서에서 배열과 포인터의 관계를 이해하고 프로그램에서 효과적으로 사용할 수 있습니다.

포인터저장 주소를 저장하는 변수입니다. 포인터는 단일 변수의 주소를 저장할 뿐만 아니라배열단위의 주소.

다음 예제를 보세요:

int* ptr;
int a[5]
ptr = &a[2]  // &a[2]는 a[5]의 세 번째 요소의 주소.

포인터가 배열의 네 번째 요소를 가리키도록 설정하면, 즉 위의 경우에서 네 번째 배열 요소의 저장 주소.

ptr가 예제의 세 번째 요소를 가리키고 있기 때문에 ptr + 1포인터는 네 번째 요소를 가리키게 됩니다。

ptr를 다음 바이트의 주소로 생각할 수 있습니다。 +1ptr의 다음 바이트의 주소를 제공했습니다.但这是不正确的。

이는 ptr가 int 포인터이고, int의 크기는 운영 체제에 따라 고정되기 때문입니다.64비트 운영 체제에서 int 타입의 크기는4바이트). 따라서, ptr와 ptr +1주소는4바이트.

ptr가 char 포인터인 경우, ptr와 ptr + 1주소는1바이트, 문자의 크기는1바이트.

예제1:C ++포인터와 배열

C ++프로그램은 배열과 포인터를 사용하여 배열 요소의 주소를 표시합니다

#include <iostream>
using namespace std;
int main()
{
    5]
    float *ptr;
    
    cout << "배열을 사용하여 주소를 표시합니다: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "&arr[" << i << "] = " << &arr[i] << endl;
    }
    // ptr = &arr[0]
    ptr = arr;
    cout << "\n포인터를 사용하여 주소를 표시합니다: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "ptr + " << i << " = " << ptr + i << endl;
    }
    return 0;
}

출력 결과

배열을 사용하여 주소를 표시합니다:
&arr[0] = 0015F718
&arr[1] = 0015F71C
&arr[2] = 0015F720
&arr[3] = 0015F724
&arr[4] = 0015F728
포인터를 사용하여 주소를 표시합니다:
ptr + 0 = 0015F718
ptr + 1 = 0015F71C
ptr + 2 = 0015F720
ptr + 3 = 0015F724
ptr + 4 = 0015F728

위의 프로그램에서는 다른 포인터 ptr를 사용하여 배열 요소 arr의 주소를 표시합니다.

하지만, 배열 요소는 같은 배열 이름 arr를 사용하여 포인터 표기법으로 접근할 수 있습니다. 예를 들어:

int arr[3]
&arr[0]와 같습니다
&arr[1]와 같습니다 + 1
&arr[2]와 같습니다 + 2

예제2:포인터와 배열

C ++프로그램은 포인터 기호를 사용하여 배열 요소의 주소를 표시합니다.

#include <iostream>
using namespace std;
int main() {
    5]
    
    cout << "포인터 기호를 사용하여 주소를 표시합니다: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << arr + i << endl;
    }
    return 0;
}

출력 결과

포인터 기호를 사용하여 주소를 표시합니다:
045FB90
045FB94
045FB98
045FB9C
045FBA0

포인터 ptr는 주소를 저장하며, 표현식*ptr를 사용하여 주소에 저장된 값을 확인할 수 있습니다.

와 같이 사용할 수 있습니다*(ptr + 1)를 저장한 ptr + 1의 값을 확인하세요.

다음 코드를 고려해 주세요:

int ptr[5] = {3, 4, 5, 5, 3};
  • &ptr[0]와 ptr와 같습니다*ptr와 ptr[0]

  • &ptr[1]와 ptr + 1،*(ptr + 1)와 ptr[1]

  • &ptr[2]와 ptr + 2،*(ptr + 2)와 ptr[2]

  • &ptr[i]와 ptr + i ,*(ptr + i) ptr[i]와 같습니다

예제3:C ++포인터와 배열

C ++프로그램은 포인터 기호를 사용하여 입력된 데이터를 삽입하고 표시하는 데 사용됩니다.

#include <iostream>
using namespace std;
int main() {
    5]
    
   // 포인터 기호를 사용하여 데이터를 삽입
    cout << "입력5개의 숫자: ";
    for (int i = 0; i < 5; ++i) {
        cin >> *(arr + i) ;
    }
    // 포인터 기호를 사용하여 데이터를 표시
    cout << "데이터를 표시: " << endl;
    for (int i = 0; i < 5; ++i) {
        cout << *(arr + i) << endl ;
    }
    return 0;
}

출력 결과

입력5개의 숫자: 125
145
180
225
335
데이터를 표시:
125
145
180
225
335