>  기사  >  백엔드 개발  >  배열 포인터의 용도는 무엇입니까?

배열 포인터의 용도는 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-06-11 16:20:554433검색

배열 포인터의 용도는 무엇입니까?

int *a[4]; //指针数组

포인터 배열은 여러 포인터를 동시에 선언하는 것과 같습니다. 배열의 각 요소는 포인터입니다. 이해하기 쉽습니다. 배열 포인터에 중점을 두겠습니다.

int (*p)[4]; //数组指针

배열 포인터는 한 번에 하나의 포인터를 선언하는 것과 같습니다. 단지 이 포인터가 매우 특별한 배열을 가리키는 것뿐입니다.

[]는 *보다 우선순위가 높으므로 배열 포인터 선언 시 ()를 추가해야 합니다.

예제 1:

#include<stdio.h>#include<stdlib.h>void main()
{    //数组指针的用法,用处。
    int b[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。    //int *p2=&b;
    p=&b;    int i=0;    while(i<16)
    {
          printf("%d\t",(*p)[i]);          //printf("%d\t",*p2++);
          i++;
    }
}

printf("%dt",(*p)[i]); 출력 배열 b를 탐색합니다.
배열 포인터는 남동생과 동일합니다. 남동생의 성격. Number, 첨자 값을 통해 특정 숫자, 즉 배열의 어떤 숫자를 직접 액세스할 수 있습니다. 배열 포인터 첨자가 증가하면(i++) 포인터는 변경되지 않습니다.

이것은 정수 포인터를 사용하여 직접 구현할 수 있으며 더 편리하고 간결합니다. 위의 주석 섹션을 참조하세요.

예제 2: 예 1의 while() 문을 바꿉니다.

  while(i<4)
    {
          printf("%d\t",(*p++)[0]);
          i++;
    }

예제 2는 1 5 9 13을 출력하며 이는 포인터가 한 번에 4 int.16바이트를 이동하는 것과 같습니다.

배열 포인터가 증가하면(*p++) 포인터는 이동된 크기(유형)를 가리킵니다.

사실 위 문장은 다른 유형의 포인터에도 적용됩니다.

예: int *p;

//포인터는 정수 포인터인 int를 가리킵니다. 정수형 변수를 저장할 수 있는 주소입니다. 무슨 소용이 있나요? 즉, p++를 사용하면 다음 int형 번호를 가리킬 수 있다. 그렇다면 포인터는 배열을 가리키는 데 사용되는 경우가 많습니다. 모두 int 유형이므로 단계 크기가 파생됩니까? 정수 포인터의 단계 크기는 sizeof(int)이며 4바이트입니다.

//마찬가지로 float 유형 포인터, char 유형 포인터 등을 얻을 수 있습니다. . . ​

같은 방법으로 배열 포인터를 얻을 수 있는데, 그 특징은 무엇인가요? 배열의 첫 번째 주소를 저장합니다. 사용? p++를 사용하면 다음 배열을 가리킬 수 있습니다. 그래서? 이를 사용하여 2차원 배열을 가리킵니다. 2차원 배열의 각 요소는 동일한 유형(모두 int 배열)이므로 단계 크기를 추론할 수 있습니까? sizeof(int[4]), 즉 16

//직접 말하면 배열 유형을 가리키는 포인터입니다

예 3: 배열 포인터는 2차원 배열을 가리킵니다.

#include<stdio.h>#include<stdlib.h>void main()
{    int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}};    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
    p=&a;    int i=0;    while(i<3)
    {        //printf("%d\t",(*p)[i]);        //数组指针,指向的是一个数组整体,相当于指针也带了下标,当执行i++操作时,下标+1,得到该数组的下一个元素,        //在该例中,指针没有位移,所以依次输出为1 2 3
        printf("%d\t",(*p++)[0]);        //整型数组类型的指针,指向的是一个数组整体,当执行*p++操作时,指针位移该数组长度的位数        //在该例中,即指针位移4个int的长度,所以输出是1 11 21
        i++;
    }
}

추천 튜토리얼: "

C Video Tutorial

"

위 내용은 배열 포인터의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.