la taille du tableau à deux dimensions en C
J'ai le texte suivant tableau à deux dimensions:
#define ROW 100
#define LINE 50
int a[ROW][LINE];
mais comment obtenir le sizeof tableau pour les 45 dernières lignes, par exemple a[55][0]
à a[99][99]
?
pouvons-nous faire quelque chose comme sizeof(&a[55])
?
Les 45 dernières lignes seraient
oui, je vous remercie!
En tant que Chasseur, mais en général, vous voulez éviter fixe la taille des tableaux comme ça, parce que vous êtes coder en dur la taille de la mémoire tampon et à un certain point, vous voulez stocker plus de...
peut-on utiliser le pointeur pour obtenir la taille, ce qui peut éviter les les matrices de taille fixe
À l'aide du pointeur pour obtenir la taille n'a pas vraiment de sens -- sizeof(int *) est fixe (en général 4 ou 8 octets, selon l'arc, mais ce n'est pas garanti), peu importe de la quantité de mémoire allouée à l'endroit de votre pointeur pointe.
a[55][0]
à a[ROW - 1][LINE - 1]
.oui, je vous remercie!
En tant que Chasseur, mais en général, vous voulez éviter fixe la taille des tableaux comme ça, parce que vous êtes coder en dur la taille de la mémoire tampon et à un certain point, vous voulez stocker plus de...
peut-on utiliser le pointeur pour obtenir la taille, ce qui peut éviter les les matrices de taille fixe
À l'aide du pointeur pour obtenir la taille n'a pas vraiment de sens -- sizeof(int *) est fixe (en général 4 ou 8 octets, selon l'arc, mais ce n'est pas garanti), peu importe de la quantité de mémoire allouée à l'endroit de votre pointeur pointe.
OriginalL'auteur user2131316 | 2013-06-24
Vous devez vous connecter pour publier un commentaire.
sizeof
d'un tableau est garanti pour être égale à lasizeof
d'un seul élément, multiplié par le nombre d'éléments. Donc, si vous voulez savoir combien de mémoire est occupée par un nombre spécifique de lignes, simplement calculer le nombre d'éléments et de les multiplier par la taille de l'élément. 45 lignes nécessiteraitOu, alternativement
Il n'a pas vraiment d'importance si ce sont dernier 45 lignes. Toutes les lignes sont les mêmes.
OriginalL'auteur AnT
Si vous voulez juste les dernières lignes, à partir de la ligne de 55 ans et avant, comment sur
Si vous voulez juste un générique N nombre de lignes, que diriez -
Est
sizeof int
syntaxe correcte? Il n'est pas en C89 au moinsDès qu'un tableau se désintègre en un pointeur, tout ce que vous avez est le pointeur, et les pointeurs n'ont pas d'informations (comme la taille) sur les données des points.
Vous avez raison, j'ai toujours mélanger l'expression et le type
sizeof
opérateurs. C'est pourquoi j'ai l'habitude de toujours utiliser la variante avec des parenthèses.La syntaxe est
sizeof expr
ousizeof ( type-name )
. Leexpr
peut être une mise entre parenthèses de l'expression. C'est la même chose en C89/C90, C99, et C11.OriginalL'auteur Some programmer dude