Maison  >  Article  >  développement back-end  >  Quel est l’ordre dans lequel les éléments d’un tableau bidimensionnel sont stockés en mémoire en langage C ?

Quel est l’ordre dans lequel les éléments d’un tableau bidimensionnel sont stockés en mémoire en langage C ?

烟雨青岚
烟雨青岚original
2020-06-28 14:54:0710020parcourir

En langage C, les éléments d'un tableau bidimensionnel sont stockés ligne par ligne en mémoire. Tableau bidimensionnel A[m][n], qui est un tableau bidimensionnel avec m lignes et n colonnes ; en supposant que a[p][q] est le premier élément de A, il peut être stocké selon la "priorité des lignes". " ou le stockage "Colonne majeure" est utilisé pour calculer l'adresse de l'élément a[i][j].

Quel est l’ordre dans lequel les éléments d’un tableau bidimensionnel sont stockés en mémoire en langage C ?

Dans le langage C, les éléments d'un tableau bidimensionnel sont stockés ligne par ligne en mémoire.

Tableau bidimensionnel A[m][n], qui est un tableau bidimensionnel avec m lignes et n colonnes. Soit a[p][q] le premier élément de A, c'est-à-dire que les indices de ligne du tableau bidimensionnel vont de p à m+p et les indices de colonne vont de q à n+q lorsqu'ils sont stockés dans. "row-major order", alors L'adresse de l'élément a[i][j] est calculée comme suit :

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t; Lorsque

est stocké dans "l'ordre majeur des colonnes", l'adresse est calculée comme suit :

LOC( a[i][j]) = LOC(a[p ][q]) + ((j − q) * m + (i − p)) * t;

Le nombre minimum d'unités requis pour stocker ce tableau, il faut (m-p+1) * (n- q+1) * t octets.

Quel est l’ordre dans lequel les éléments d’un tableau bidimensionnel sont stockés en mémoire en langage C ?

Informations étendues

Tableau bidimensionnel dynamique C++ :

Prenons le plastique comme exemple, la ligne est le nombre de lignes , col est le nombre de colonnes

int **data;//Pointeur de stockage d'un tableau à deux dimensions (pointeur vers pointeur. L'adresse de date=x[0][0]. Ceci le marquage sera meilleur. Parce que sizeof Le résultat (date) est 4 et il est impossible de stocker un tableau bidimensionnel).

//以下实现如何申请内存
data = new int *[row];
for (int k = 0; k < row; k++)
{
data[k] = new int[col];
}
//赋值跟普通二维数组一样 例如
data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5
//删除内存
for (int i = 0 ; i < row; ++i)
{
delete [] data[i]; //此处的[]不可省略
}
delete [] data;

Tutoriel recommandé : "Langage 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn