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].
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.
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!