contenu
- 1. Création et initialisation de tableaux unidimensionnels
- 2. L'utilisation de tableaux unidimensionnels
- 3. Stockage de tableaux unidimensionnels en mémoire
- 4. Création et initialisation de tableaux à deux dimensions
- 5. L'utilisation de tableaux à deux dimensions
- 6. Stockage de tableaux bidimensionnels en mémoire
- 7. Tableau hors limites
- 8. Tableaux comme paramètres de fonction
- 9. Vous apprendre le groupe à la main
1. Création et initialisation de tableaux unidimensionnels
créer: Prenons un tableau d'entiers comme exemple
int arr[5] = {
1,2,3,4,5 };
La forme est comme ceci, arr
pour le nom du tableau créé
[5]
, le tableau à l'intérieur est le nombre d'éléments du tableau,
int
indiquant que le type des éléments du tableau est un type entier
initialisation:
int arr[5] = {
1,2,3,4,5 };
这种是把数组里面的元素全部初始化,并且指定了数组元素的个数
int arr1[] = {
1,2,3,4,5 };
这种没有指定数组的个数,数组的元素的个数根据后面大括号里面的个数确定
int arr2[5] = {
1,2 };
这种指定了数组元素的大小却没有完全初始,
前面两个元素分别被初始化为1,2后面3个元素都被默认初始化为0
tableau de caractères
char arr[]="maoleshua";
这是10个元素,因为字符串以\0为结尾
char arr[]={
'm','l','n','b'};
这是4个元素
pense
int n=5;
int arr[n]={
1,2,3,4,5};
Le code ci-dessus est-il correct ? Avant la norme C99, il était faux d'écrire de cette façon ( [] ne peut contenir que des constantes entières ), mais après cela, il y a le concept de tableaux de longueur variable, qui est correct.
Mais le compilateur vs ne prend pas en charge la norme C99 pour le moment. Donc c'est faux.
2. L'utilisation de tableaux unidimensionnels
facile à utiliser
int main()
{
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 5; i++)
{
arr[i] = i;
}
for (i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3. Stockage de tableaux unidimensionnels en mémoire
Le tableau est stocké de manière contiguë dans la mémoire.
Pour le code ci-dessus,
regardez son adresse mémoire
4. Création et initialisation de tableaux à deux dimensions
Le tableau à deux dimensions ressemble à ceci int arr[][]
, le premier [ ] représente la ligne et le second [ ] représente la colonne.
initialisation :
int arr1[2][2] = {
1,2,3 ,4};
全部初始化
int arr2[2][2] = {
{
1,2},{
3 ,4} };
和上面的一样,每个大括号表示一行
int arr3[2][2] = {
{
1},{
2,3 } };
这种第一行没有完全初始化,没有完全初始化的被默认初始化为0
int arr4[][2] = {
1,2,3 ,4};
这种省略行的表示是正确的,行数由后面的初始化的确定
int arr5[2][] = {
1,2,3,4 };
这种初始化是错误的,不能省略列
int arr6[2][2] = {
1 };
非完全初始化,其余元素都为0
5. L'utilisation de tableaux à deux dimensions
C'est aussi simple à utiliser
int arr[2][2] = {
1,2,3 ,4};
int i, j;
for(i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
6. Stockage de tableaux bidimensionnels en mémoire
Les tableaux bidimensionnels sont également stockés de manière contiguë dans la mémoire
7. Tableau hors limites
Un tableau hors limites signifie accéder à la mémoire en dehors du tableau.
Prenons un tableau unidimensionnel comme exemple
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 6; i++)这里当i==5,访问数组中第6个元素,为越界访问
{
arr[i] = i;
}
8. Tableaux comme paramètres de fonction
Le nom de tableau d'un tableau à une dimension représente l'adresse du premier élément . Le nom de tableau d'un tableau à deux dimensions représente .ligne
premièrel'adresse de l'élément de la
void f(int* arr)
{
int st = sizeof(arr) / sizeof(arr[0]);
大家可能以为st的值为5,但是为1,
因为这个arr是指针变量,32位平台上占4个字节
}
int main()
{
int arr[5] = {
1,2,3 ,4 };
f(arr);
return 0;
}
Les lecteurs doivent faire attention
9. Vous apprendre le groupe à la main
QQ groupe 720429262