Cela dépend vraiment de ce que vous devez faire. Si vous devez créer un stockage séparé pour une duplication de l'une des lignes brightnessvariants
, vous pouvez simplement déclarer un tableau séparé et copier les valeurs comme indiqué dans les commentaires et l'autre réponse.
Si, toutefois, vous devez simplement accéder à l'une des lignes brightnessvariants
dans la portée actuelle, il n'est pas nécessaire de stocker et de copier séparément. Tout ce qui est requis est de déclarer un pointeur et d'assigner l'adresse de départ de la ligne désirée. Ensuite, vous pouvez accéder à la ligne souhaitée de brightnessvariants
comme s'il s'agissait d'un tableau séparé. par exemple.
uint8_t brightnessvariants[4][101] = {{0}}, *btable = NULL;
Au-dessus, btable
(abréviation de votre brightnesstable
) est tout simplement un pointeur uint8_t
. Il peut être affecté l'adresse de l'une des lignes brightnessvariants
. par exemple. pour la deuxième rangée
btable = brightnessvariants[1];
btable
peut ensuite être utilisé pour accéder à une valeur quelconque à l'intérieur de la deuxième rangée, comme si elle était une matrice séparée. Voici un court exemple qui peut aider:
#include <stdio.h>
#include <stdint.h>
int main (void) {
uint8_t brightnessvariants[4][101] = {{0}}, *btable = NULL;
int nrows = sizeof brightnessvariants/sizeof *brightnessvariants;
for (int i = 0; i < 101; i++) {
brightnessvariants[0][i] = i + 1;
brightnessvariants[1][i] = i + 3;
brightnessvariants[2][i] = i + 5;
brightnessvariants[3][i] = i + 7;
}
for (int i = 0; i < nrows; i++) {
printf ("\nbrightnesstable[%d] :\n\n", i);
btable = brightnessvariants[i];
for (int j = 0; j < 101; j++) {
if (j && j % 10 == 0) putchar ('\n');
printf (" %3hhu", btable[j]);
}
putchar ('\n');
}
return 0;
}
Exemple d'utilisation/sortie
$ ./bin/ptrtobtable
brightnesstable[0] :
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
101
brightnesstable[1] :
3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40 41 42
43 44 45 46 47 48 49 50 51 52
53 54 55 56 57 58 59 60 61 62
63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82
83 84 85 86 87 88 89 90 91 92
93 94 95 96 97 98 99 100 101 102
103
brightnesstable[2] :
5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44
45 46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63 64
65 66 67 68 69 70 71 72 73 74
75 76 77 78 79 80 81 82 83 84
85 86 87 88 89 90 91 92 93 94
95 96 97 98 99 100 101 102 103 104
105
brightnesstable[3] :
7 8 9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45 46
47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66
67 68 69 70 71 72 73 74 75 76
77 78 79 80 81 82 83 84 85 86
87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106
107
choses regarder par-dessus et laissez-moi savoir si vous avez des questions. Si vous avez besoin d'un exemple de copie au lieu de l'utilisation d'un pointeur, faites le moi savoir et je suis heureux de vous aider.
Pourquoi voudriez-vous faire cela? – EOF
utilisez simplement une boucle pour accéder au contenu du sous-tableau et copiez chaque valeur dans le nouveau tableau. –
@johnelemans: Quel est le problème avec 'memcpy'? – Olaf