Heim >Backend-Entwicklung >C#.Net-Tutorial >Wozu dienen Array-Zeiger?

Wozu dienen Array-Zeiger?

coldplay.xixi
coldplay.xixiOriginal
2020-06-11 16:20:554464Durchsuche

Wozu dienen Array-Zeiger?

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

Ein Zeiger-Array entspricht der gleichzeitigen Deklaration mehrerer Zeiger. Jedes Element des Arrays ist ein Zeiger. Es ist leicht zu verstehen. Konzentrieren wir uns auf Array-Zeiger

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

Array-Zeiger entsprechen der Deklaration eines Zeigers nach dem anderen. Es ist nur so, dass dieser Zeiger auf etwas ganz Besonderes zeigt, es ist ein Array.

[] hat eine höhere Priorität als *, daher muss () hinzugefügt werden, wenn der Array-Zeiger deklariert wird.

Beispiel 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]); Durchlaufen des Ausgabearrays b;
Array-Zeiger entspricht dem Tanzkönig Wie ein Zombie mit einem jüngeren Bruder ist n die Anzahl der jüngeren Brüder. Über den Indexwert können Sie direkt auf den spezifischen jüngeren Bruder zugreifen, dh auf die Nummer im Array

Der Index des Array-Zeigers wird inkrementiert (i++), der Zeiger zeigt unverändert.

Dies kann direkt mit Ganzzahlzeigern implementiert werden und ist bequemer und prägnanter. Siehe kommentierten Abschnitt oben.

Beispiel 2: Ersetzen Sie die while()-Anweisung in Beispiel 1.

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

Beispiel 2 gibt 1 5 9 13 aus, was dem Zeiger entspricht, der sich jeweils um 4 int.16 Bytes bewegt.

Wenn der Array-Zeiger inkrementiert wird (*p++), zeigt der Zeiger auf die verschobene Größe von (Typ).

Tatsächlich gilt der obige Satz auch für andere Arten von Zeigern.

Wie int *p;

// Der Zeiger zeigt auf int, was ein ganzzahliger Zeiger ist. Es ist die Adresse, an der die Ganzzahlvariable gespeichert werden kann. Was ist der Nutzen? Das heißt, wenn p++ verwendet wird, kann es auf die nächste int-Typnummer verweisen. Also? Oft werden Zeiger verwendet, um auf ein Array zu zeigen. Da sie alle vom Typ int sind, wird die Schrittgröße abgeleitet? Die Schrittgröße des Ganzzahlzeigers beträgt sizeof(int), also 4 Bytes

//In ähnlicher Weise können wir Zeiger vom Typ Float, Zeiger vom Typ char usw. erhalten. . .

Auf die gleiche Weise können wir den Array-Zeiger erhalten. Welche Eigenschaften hat er? Speichern Sie die erste Adresse des Arrays. verwenden? Bei Verwendung von p++ kann es auf das nächste Array verweisen. Also? Verwenden Sie es, um auf ein zweidimensionales Array zu zeigen. Kann die Schrittgröße abgeleitet werden, da jedes Element im zweidimensionalen Array vom gleichen Typ ist (alle sind ein int-Array)? sizeof(int[4]), also 16

// Um ​​es klar auszudrücken, es ist ein Zeiger, der auf den Array-Typ zeigt

Beispiel 3: Der Array-Zeiger zeigt auf ein zweidimensionales Array.

#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++;
    }
}

Empfohlenes Tutorial: „C-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWozu dienen Array-Zeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn