Pour les debutants : allocation dyanamique de memoire pour un tableau a 2 dimesnsions en c (tout compilateur)

Contenu du snippet

Quand j'étais débutant, j"ai eu beaucoup de mal à piger l'allocation dyamique de mémoire; il y en a peut être dans mon cas
, dons j'ai fait un petit tutot à travers un exemple. N'étant pas un pro du C, si des bons détectent une erreur qu'il me le dise

Source / Exemple :


#include <stdio.h> // Fonctions printf et scanf
#include <stdlib.h> // Fonctuions malloc et free
//Erit sous linux, mais devrait macher sur tout les compilateurs
//Code au format ANSI-C
//J'ai volontairement enlev&#65533;les accents pour les diff&#65533;ents systemes d'exploitation
int main()
{
	int **tab; // Futur tableau de type integer a deux dimensions
	int x, y; // Nbr de lignes, nbr de colonnes
	int i, j; // Simples compteurs de boucles
	int taille_int = sizeof(int); // Taille d'un type integer, ou d'un autre type si votre
	//pointeur pointe sun un autre typr par ex. 'char'

	printf ("Entrez le nombre de lignes : ");
	scanf ("%d",&x);

	printf ("Entrez le nombre de colonnes : ");
	scanf ("%d",&y);

	tab = (int**)malloc(taille_int*x); // On alloue dynamiquement la premiere dimension
	//Si votre pointeur est pointe sur un autre type remplacez 'int' par 'char' par exemple

	if (tab == NULL) {
		printf ("Memoire insuffisante.");
		return (1);
	}

	for (i=0; i<x; i++) { // Cette boucle alloue dynamiquement la seconde dimension
    		tab[i] = (int*)malloc(taille_int*y);
	}

	for (i=0; i<x; i++) { // Cette boucle remplie le tebleau
		for (j=0; j<y; j++) {
			tab[i][j] = i*j;
			if (tab[i][j] != 0) {
				printf("%d	",tab[i][j]);
			}
		}
		printf ("\n");
	}

	free (tab); // On libere l'espace memoire reserve
	return (0);
}

// Pour compiler sous Linux :
// gcc -c matrice.c
// gcc -o matrice matrice.o

//Mais je pense que ca devrait marcher sur diff&#65533;ent systeme d'exploitation !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.