int *a[4]; //指针数组
Un tableau de pointeurs équivaut à déclarer plusieurs pointeurs à la fois. Chaque élément du tableau est un pointeur. C'est facile à comprendre. Concentrons-nous sur les pointeurs de tableau
int (*p)[4]; //数组指针
Les pointeurs de tableau équivalent à déclarer un pointeur à la fois. C'est juste que ce pointeur pointe vers quelque chose de très spécial, c'est un tableau.
[] a une priorité supérieure à *, donc () doit être ajouté lors de la déclaration du pointeur de tableau.
Exemple 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]); parcourir le tableau de sortie b;
le pointeur de tableau est équivalent au dance king Comme un zombie, avec un frère cadet, n est le nombre de frères cadets. Vous pouvez accéder directement au frère cadet spécifique via la valeur d'indice, c'est-à-dire quel numéro dans le tableau
Le. L'indice du pointeur de tableau est incrémenté (i++ ), le pointeur pointe inchangé.
Cela peut être implémenté directement à l'aide de pointeurs entiers, et c'est plus pratique et concis. Voir la section commentée ci-dessus.
Exemple 2 : remplacez l'instruction while() dans l'exemple 1.
while(i<4) { printf("%d\t",(*p++)[0]); i++; }
Exemple 2 génère 1 5 9 13, ce qui équivaut au pointeur déplaçant 4 int.16 octets à la fois.
Lorsque le pointeur de tableau est incrémenté (*p++), le pointeur pointe vers la taille déplacée de (type).
En fait, la phrase ci-dessus s'applique également à d'autres types de pointeurs.
Tel que int *p;
//Le pointeur pointe vers int, qui est un pointeur entier. Quelles sont les caractéristiques des pointeurs entiers ? C'est l'adresse qui permet de sauvegarder la variable entière. A quoi ça sert ? Autrement dit, lorsque p++ est utilisé, il peut pointer vers le numéro de type int suivant. Alors ? Utilisez souvent des pointeurs pour pointer vers un tableau. Parce qu'ils sont tous de type int, la taille du pas est dérivée ? La taille du pas du pointeur entier est sizeof(int), soit 4 octets
//De même, nous pouvons obtenir des pointeurs de type float, des pointeurs de type char, etc. . .
De la même manière, on peut obtenir le pointeur de tableau, quelles sont ses caractéristiques ? Enregistrez la première adresse du tableau. utiliser? Lors de l'utilisation de p++, il peut pointer vers le tableau suivant. Donc? Utilisez-le pour pointer vers un tableau à deux dimensions. Étant donné que chaque élément du tableau bidimensionnel est du même type (tous sont un tableau int), la taille du pas peut-elle être déduite ? sizeof(int[4]), soit 16
//Pour parler franchement, c'est un pointeur pointant vers le type de tableau
Exemple 3 : Le le pointeur de tableau pointe vers un tableau à deux dimensions.
#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++; } }
Tutoriel recommandé : "Tutoriel vidéo C"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!