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 중국어 웹사이트의 기타 관련 기사를 참조하세요!