C Pointeur vers un tableau

Tableaux en C

Vous pouvez ignorer ce chapitre pour l'instant et y revenir après avoir compris le concept des pointeurs en C.

Si vous avez une certaine compréhension des pointeurs en C, vous pouvez commencer à étudier ce chapitre.

Le nom du tableau lui-même est un pointeur constant, ce qui signifie que sa valeur ne peut pas être modifiée ; une fois déterminé, il ne peut pas pointer ailleurs.

Par conséquent, dans la déclaration suivante :

double balance[50];

balance.paffecter àbalancel'adresse du premier élément :

double *p;
double balance[10];

p = balance;

Utiliser un nom de tableau comme pointeur constant est autorisé, et inversement. Par conséquent, *(balance + 4) est un moyen autorisé d'accéder aux données de balance

Une fois que vous avez stocké l'adresse du premier élément dans p, vous pouvez utiliser *p, *(p+1), *(p+2), etc. pour accéder aux éléments du tableau. L'exemple suivant illustre ces concepts abordés ci-dessus :

Exemple

#include <stdio.h> int main () { /*Tableau d'entiers de 5 éléments*/ double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; int i; p = balance; /*Afficher la valeur de chaque élément du tableau*/ printf( "Valeurs du tableau à l'aide de pointeurs\n"); for ( i = 0; i < 5; i++ ) { printf("*(p + %d) : %f\n", i, *(p + i) ); } printf( "Valeur du tableau en utilisant balance comme son adresse\n"); for ( i = 0; i < 5; i++ ) { printf("*(balance + %d) : %f\n", i, *(balance + i) ); } return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

使用指针的数组值
*(p + 0) : 1000.000000
*(p + 1) : 2.000000
*(p + 2) : 3.400000
*(p + 3) : 17.000000
*(p + 4) : 50.000000
使用 balance 作为地址的数组值
*(balance + 0) : 1000.000000
*(balance + 1) : 2.000000
*(balance + 2) : 3.400000
*(balance + 3) : 17.000000
*(balance + 4) : 50.000000

Dans l'exemple ci-dessus, p est un pointeur vers double, ce qui signifie qu'il peut stocker l'adresse d'une variable de type double. Une fois que nous avons l'adresse dans p,*pdonnera la valeur stockée à l'adresse correspondante dans p, comme démontré dans l'exemple ci-dessus.

Tableaux en C

autres extensions